如何用C#发送数据包
本文关键字:数据包 何用 | 更新日期: 2023-09-27 18:00:36
我在互联网上读过一些,我想知道如何在C#中通过TCP发送数据包。这就是我迄今为止所做的:
TcpClient client = new TcpClient("myipaddresssecret", 7172);
Byte[] data = "140049081141799b622d422fcd918d9fb1c55bc3f422";
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
client.Close();
(从Wireshark获得数据)
所以问题是:如何用C#在互联网上发送TCP数据包,或者我的代码出了什么问题?
要在Windows上发送自己制作的TCP数据包,您需要像WinPcap这样的驱动程序。如果您使用WinPcap,您可以使用许多.Net包装器中的一个,也可以编写自己的代码。仅使用Windows API提供的对象(如套接字)发送原始帧将不起作用。
看看这里:http://msdn.microsoft.com/en-us/library/ms740548(VS.85).aspx
唯一的选择是创建自己的网络监控驱动程序,或者购买WinPcap的商业版本,该版本不需要安装,但可以无缝集成到您的程序中。
在Windows 7、Windows Vista、Windows带有Service Pack 2(SP2)的XP,以及带有Service Pack 3(SP3)的Windows XP,通过raw发送流量的能力套接字在几个方面受到限制方式:
TCP数据无法通过原始套接字发送。
如果你改变主意,也许你可以在这个图书馆里找到你需要的东西:http://www.eex-dev.net/fileadmin/user_upload/apidoc/NetworkLibrary/index.html
它包括一个WinPcap包装器和许多用于处理和分析数据包的方法和对象。愿它有用。