0
我在一台从客户端接收UDP数据包的PC上运行服务器应用程序。收到的UDP数据包(在Wireshark中验证),但包含错误的校验和。我无法控制客户端,并需要能够在Python中接收这些数据包。以下代码没有看到数据包:在Python中接收到带有错误校验和的UDP数据包
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.bind(addr)
while 1:
data,addr = UDPSock.recvfrom(buf)
if not data:
print "Client has exited!"
break
else:
print "\nReceived message '", data,"'"
UDPSock.close()
无论如何,在Python中,我可以接收畸形的UDP数据包?
你知道校验和错误的原因吗?我的意思是假设由UDP客户端处理。您发布的代码看不到数据包,因为它可能被下划线网络设备抛出,因为校验和错误,可以解决该问题。 – 2012-03-29 19:06:00
你怎么知道校验和是错误的?在_sending_系统上运行的Wireshark经常(现在几乎总是)报告错误的校验和,因为校验和计算被卸载到适配器,并且驱动程序不会执行校验和。这是一个众所周知的伪问题。但是,如果您在_receiving_系统上收到错误的校验和,那是另一个问题。 – 2012-03-29 19:35:28
如果你真的得到了错误的校验和,那么我们需要知道两端系统和两个系统之间的物理硬件特性。 – 2012-03-29 19:37:09