【发布时间】:2013-06-24 18:26:47
【问题描述】:
我正在使用 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 尽可能简单,所以我希望它不必向计算机发送任何数据包来验证连接。这就是我想使用 UDP over TCP 的原因。
任何帮助将不胜感激。
格雷姆
已解决:我注意到计算机在尝试建立连接时正在向端口 169.254.255.255 发送消息。我将 UDP_IP="169.254.233.201" 更改为 UDP_IP="169.254.255.255" 并且 UDP 数据包开始通过。
课程:我不擅长 IP 地址。
【问题讨论】:
-
FPGA 是否实现了 IP 堆栈?你的FPGA的ip是多少?它是如何连接到您的计算机的?
-
该板通过以太网连接。我对 IP 堆栈不熟悉,但板上有一个预编程的微处理器,可以处理计算机和 FPGA 之间的连接。但是,我不相信它会自行将任何内容发送回计算机,并且在我的逻辑中我不会将任何内容发送回计算机。我也希望保持这种方式以减少使用的逻辑元素的数量。
-
"板上有一个预编程的微处理器,用于处理计算机和 FPGA 之间的连接" 应该如何建立连接?通过串口、以太网、USB ?你得到一个默认 ip,因为板子没有 DHCP 服务器,因此为什么发送到 169.254.233.201 不起作用。
标签: python networking network-programming udp fpga