我有一些数据存储在字节数组中。数据包含IPv4数据包(包含UDP数据包)。
我想使用C#(首选)或C ++通过网络原始发送此数组。我不想使用C#的udp-client作为例子。
有谁知道如何执行此操作?
答案 0 :(得分:4)
尝试原始套接字(为套接字类型指定SOCK_RAW) 您还将负责计算IP校验和。这可能有点烦人。
答案 1 :(得分:1)
using System.Net;
using System.Net.Sockets;
public class Test
{
public void Send(byte[] rawData, IPEndPoint target)
{
// change what you pass to this constructor to your needs
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IPv4);
try
{
s.Connect(target);
s.Send(rawData);
}
catch(Exception ex)
{
// handle this exception
}
}
}
答案 2 :(得分:1)
我找到了可能出现问题的解决方案:请参阅答案:How to fake source ip-address of a udp-packet?
答案 3 :(得分:0)
以下是通过NIC http://www.codeproject.com/KB/IP/sendrawpacket.aspx发送原始数据的方法如上所述,Windows限制原始套接字操作,您必须修改NDIS驱动程序才能发送您想要的任何内容。当然,您将遇到Vista / 7上的数字驱动程序签名问题(可以通过测试模式临时绕过)。
答案 4 :(得分:-1)
如果您有原始数据(即字节数组)并且想要通过网络发送它,那么您需要某种编码:
编码解决了上面的第一点 TCP是后两点的传统解决方案。
编码的例子是: