5

我正在尝试用我的计算机读取 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 计算机上的相同程序也没有收到任何内容...

谢谢你的帮助!

4

2 回答 2

3

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

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

于 2010-05-28T11:52:28.630 回答
3

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

于 2010-06-01T11:03:44.683 回答