如何用C#发送数据包?

时间:2011-06-26 10:27:50

标签: c# tcp packets

我在互联网上看过一些,我想知道如何在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#在Internet上发送TCP数据包,或者我的代码有什么问题?

1 个答案:

答案 0 :(得分:4)

要在Windows上发送您自己制作的TCP数据包,您需要一个像WinPcap这样的驱动程序。如果您使用WinPcap,您可以使用众多.Net包装器之一或自己编写代码。仅使用Windows API提供的对象(如套接字)发送原始帧将不起作用。

请看这里:http://msdn.microsoft.com/en-us/library/ms740548(VS.85).aspx

唯一的选择是创建自己的网络监控驱动程序,或者购买不需要安装但可以无缝集成到程序中的商业版WinPcap。

  

在Windows 7,Windows Vista,Windows上   XP Service Pack 2(SP2)和   Windows XP Service Pack 3(SP3),   能够通过原始发送流量   插座已被限制在几个   方法:

     

无法通过原始套接字发送TCP数据。

对于你改变主意的情况,也许你可以在这个库中找到你需要的东西:http://www.eex-dev.net/fileadmin/user_upload/apidoc/NetworkLibrary/index.html

它包含一个WinPcap包装器以及许多用于制作和分析数据包的方法和对象。可能有用。