有没有办法通过C#将原始数据包以太网发送到其他主机?在Windows 7中,如果有所不同。

有帮助吗?

解决方案

根据SAINT_PL的建议:

我发现可能更好的解决方案 - 类似于SharppCap。它是 pcap.net - .NET包装器WinPCAP。现在,我可以随心所欲地修改数据包。


我为您提供一些可能会有所帮助的资源。我不尝试Windows 7中的解决方案,但也许它包含一些很好的信息。

原始以太网包操作 或者 镜像在Codeproject上

本文的此目的是说明如何在Microsoft平台上使用C#发送原始以太网数据包。原始以太网数据包是发送到物理线的完整第2层网络框架。发送这样的帧使您可以操纵目标和源MAC地址以及第3层协议字段。

还有一些关于原始插座的信息(以防万一您也很有趣):

客户端(和服务器)插座通信 看看整章,但这里的关键部分:

不发送数据包,但可能很有趣: C#中的网络嗅探器, SharppCap- .NET的数据包捕获框架

其他提示

iPhelper API有一些低水平的东西 - 但可能不像您想要的那样低

Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("10.25.184.11"), 4456);

server.Connect(ip);

byte[] sendData = new byte[] { 0, 8, 32, 64 };
server.Send(sendData);

//done. now let's listen for data

byte[] receiveData = new byte[1024];
int receivedDataLength = server.Receive(receiveData);

//if the response is a string message
string stringData = Encoding.ASCII.GetString(receiveData, 0, receivedDataLength);
Console.WriteLine(stringData);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top