我希望收到原始TCP数据包,然后以相同的工作负载发送回来。
看起来应该是这样的:
void OnPacketReceived(TcpPacket p)
{
byte [] body = p.GetBody();
}
注意:我需要TCP数据包而不是以太网帧。
答案 0 :(得分:6)
如果将套接字实现为原始套接字,则可以访问整个数据包(实际上必须自己处理有关数据包的所有内容)。
创建套接字时使用SocketType.Raw和ProtocolType.Raw。
请注意,如果以这种方式实现套接字,则必须处理TCP的详细信息。
供参考,以下是有关Socket类的MSDN文档: http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.aspx
答案 1 :(得分:2)
您可以使用pcapDotNet库。
答案 2 :(得分:0)
您需要使用数据包嗅探器,您可以在其中放置您选择的过滤器,并且在此基础上也可以做出响应。
围绕WinPcap的.Net包装器可以证明对您有所帮助。