C# NET套接字中的Bug?

C# NET套接字中的Bug?,c#,.net,sockets,wireshark,C#,.net,Sockets,Wireshark,我一直在为我的程序中很少出现的这个bug伤脑筋,现在我终于找到了一些与我的代码无关的东西,或者至少我是这么认为的 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.

我一直在为我的程序中很少出现的这个bug伤脑筋,现在我终于找到了一些与我的代码无关的东西,或者至少我是这么认为的

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);
变量“dataBuffer”的Wireshark数据包转储和Visual Studio转储不匹配

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

我认为是相同的。
wireshark中的第一个选定字节对应于Visual Studio中的索引[27]。如果您将Visual Studio切换为以十六进制格式显示数字,这将更加明显。

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

请改进您的问题。将代码复制粘贴到问题中。当然,在这个级别的.NET框架中没有bug,否则每个人都会遇到麻烦。展示你期望发生的事情和真正发生的事情。将返回一个int,指示接收的字节数。您是否收到了预期的所有数据?请显示更多调试信息:在寻找了这么长时间的bug之后,你开始质疑一切。我没想到.NET框架会包含这样的bug。是的,我已经检查了所有这些东西,除了数据与我预期的不同之外,所有东西都按预期工作。不是很相似,但有一些字节是不同的。但是感谢您的提示,我已经在想是否可以将VisualStudio切换到十六进制输出。