我正在使用 Python 将 UDP 数据包发送到 FPGA 板,并且对 python 相当陌生。我正在使用 Wireshark 监控正在发送的数据包,并且我知道 FPGA 正在正确接收所有数据包。问题在于发送的数据包。计算机在连接时无法识别 FPGA 是什么,因此它将其作为一个未识别的网络并为其分配一个 IP 地址 (169.254.233.200)。我正在使用此代码尝试向 FPGA 发送一个简单地说“测试”的 UDP 数据包(抱歉,格式很糟糕)。
import sys
import socket
def main():
UDP_IP="169.254.233.201"
UDP_PORT=9
MESSAGE='Test'
print ("UDP target IP:", UDP_IP)
print ("UDP target port:", UDP_PORT)
print ("message:", MESSAGE)
sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM ) # UDP
sock.sendto( bytes(MESSAGE, 'UTF-8'), (bytes(UDP_IP, 'UTF-8'), UDP_PORT) )
但是,在运行此脚本时,计算机不会发送 UDP 数据包,而是会广播一条消息:“谁拥有 169.254.233.201?告诉 169.254.233.200”。我猜这是由身份不明的网络引起的问题,或者我只是错误地处理了数据包。我试图让 FPGA 上的 HDL 尽可能简单,所以我希望它不必向计算机发送任何数据包来验证连接。这就是我想在 TCP 上使用 UDP 的原因。
任何帮助,将不胜感激。
格雷姆
已解决:我注意到计算机在尝试建立连接时正在向端口 169.254.255.255 发送消息。我将 UDP_IP="169.254.233.201" 更改为 UDP_IP="169.254.255.255" 并且 UDP 数据包开始通过。
教训:我不擅长 IP 地址。