0

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

4

1 回答 1

4

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

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

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

在 Windows 7、Windows Vista、带有 Service Pack 2 (SP2) 的 Windows XP 和带有 Service Pack 3 (SP3) 的 Windows XP 上,通过原始套接字发送流量的能力受到以下几种方式的限制:

TCP 数据不能通过原始套接字发送。

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

它包括一个 WinPcap 包装器和许多用于制作和分析数据包的方法和对象。愿它有用。

于 2011-06-26T10:31:30.200 回答