你如何在C#中获得原始TCP数据包?

Bop*_*Bop 8 c# networking tcp .net-4.0

我希望收到原始TCP数据包,然后以相同的工作负载发送回来.

它应该看起来像这样:

void OnPacketReceived(TcpPacket p)
{
    byte [] body = p.GetBody();
}
Run Code Online (Sandbox Code Playgroud)

注意:我需要TCP数据包而不是以太网帧.

dod*_*ron 6

如果将套接字实现为原始套接字,则可以访问整个数据包(实际上必须自己处理有关数据包的所有内容).

创建套接字时使用SocketType.Raw和ProtocolType.Raw.

请注意,如果以这种方式实现套接字,则必须处理TCP的详细信息.

作为参考,这里是关于Socket类的MSDN文档:http: //msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx