2011-06-26 35 views
0

我读过一些在互联网上,我想知道如何通过TCP在C#发送数据包。这是我迄今所做的:如何在C#中发送数据包?

 TcpClient client = new TcpClient("myipaddresssecret", 7172); 
     Byte[] data = "140049081141799b622d422fcd918d9fb1c55bc3f422"; 
     NetworkStream stream = client.GetStream(); 
     stream.Write(data, 0, data.Length); 
     client.Close(); 

(得到了Wireshark的数据)

所以现在的问题是:如何在C#中通过互联网发送TCP数据包,或者什么是错我的代码?

+1

你的问题是什么? –

+0

我说我想知道如何通过TCP在C#中发送数据包? – Marcus

+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的包装和大量的方法和对象手艺和分析数据包。它可能会有用。

+0

好的如何安装它,你知道我的数据为什么太长吗?我从wireshark复制它。 – Marcus

+0

你确定他甚至想制作包头和什么?我觉得这个人只是想通过标准的TCP发送普通的正常数据。 –