-2

我一直在为我的程序中很少发生的这个错误而烦恼,现在我终于把它归结为与我的代码无关的东西,或者至少我是这么认为的。

byte[] dataBuffer = new byte[512];
IPEndPoint f = new IPEndPoint(IPAddress.Parse(packet.ipAddres), SNMP_PORT);
socket.SendTo(packet.GetBytes(), f);
IPEndPoint sender = new IPEndPoint(IPAddress.Parse(packet.ipAddres), 0);
EndPoint senderRemote = (EndPoint)sender;
socket.ReceiveFrom(dataBuffer, ref senderRemote);

Wireshark 数据包转储和变量“dataBuffer”的 Visual Studio 转储不匹配,屏幕截图

Wireshark 给了我预期的回应。Visual Studio 或我的代码没有。那么这怎么可能呢?我是否错误地使用了 .NET 套接字对象?

4

2 回答 2

0

我相信是一样的。Wireshark 中的第一个选定字节对应于 Visual Studio 中的索引 [27]。如果将 Visual Studio 切换为以十六进制格式显示数字会更明显。

于 2012-10-15T07:19:15.780 回答
0

我找到了问题,交换机上的远程 SNMP 软件。当我向交换机发送 1 个 GetNextRequestPDU 时,它应该向您发送 1 个响应数据包。但有时这个特定的交换机会向我发送 10 次相同的响应数据包。这导致套接字必须处理 10 次相同的数据包才能真正看到“正确”的数据包。这在wireshark 转储中不可见,因为重复的响应发生在wireshark 中的可见数据包之前。

于 2012-10-15T07:27:33.723 回答