UDP包出现在wireshark中,但程序不会收到

时间:2010-05-28 11:23:26

标签: python udp wireshark

我正在尝试用我的计算机读取FPGA发送的UDP包。他们被送了 到端口21844和IP 192.168.1.2(这是我的计算机的IP)。我可以在wireshark中看到包,它们没有错误。当我运行这个小小的python脚本时,它只接收到所有软件包的一小部分,这也取决于wireshark是否正在运行。

import socket
import sys


HOST, PORT = "192.168.1.2", 21844
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((HOST,PORT)) 
received ,address= sock.recvfrom(2048)
print address

我使用带有Norton Internet Security的Windows 7,我允许防火墙中的所有流量用于FPGA IP以及python。 Windows XP计算机上的相同程序也没有收到任何内容......

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您的操作系统的TCP / IP堆栈不会永久保存这些数据包。您的脚本看起来非常依赖于运行时的。在循环中尝试recvfrom,然后在后台运行脚本。然后,开始从FPGA发送数据包。

为了更加方便,请从Python的stdlib中探索SocketServer模块。

答案 1 :(得分:3)

好的,我发现了问题:FPGA中的UDP校验和计算错误。 Wireshark显示每个包,但默认情况下不检查校验和是否正确。当我将校验和设置为0x0000时,包将以python的形式到达!再次感谢您的帮助!