9

我想接收原始 TCP 数据包,然后以相同的工作量将其发回。

它应该看起来像这样:

void OnPacketReceived(TcpPacket p)
{
    byte [] body = p.GetBody();
}

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

4

3 回答 3

7

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

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

请注意,如果您以这种方式实现套接字,您将不得不处理 TCP 的细节。

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

于 2012-06-15T08:13:29.713 回答
2

您可以使用 pcapDotNet 库。

https://pcapdotnet.codeplex.com/

于 2015-07-28T08:52:05.030 回答
0

您需要使用数据包嗅探器,您可以在其中放置您选择的过滤器,并在此基础上也可以响应。

围绕 WinPcap 的 .Net 包装器可以证明对您有帮助。

于 2012-06-15T12:03:42.697 回答