【发布时间】:2009-11-20 12:13:59
【问题描述】:
我有一个 FPGA 设备,我的代码需要与之通信。协议如下:
我发送一个非零字节 (UDP) 来开启一项功能。然后 FPGA 板开始在我发送数据的端口上喷出数据。
你看到我的困境了吗?我知道我将消息发送到哪个端口,但我不知道我从哪个端口发送(是这个端口通常不是由操作系统自动选择的?)。
我应该做的最好的猜测是创建一个带有目标 IP 和端口号的套接字,然后重用该套接字进行接收。如果这样做,它是否已经设置为侦听我发送原始消息的端口?
此外,为了您的信息,此代码的变体将使用 Python 和 C# 编写。我可以查找特定的 API,因为它们都遵循 BSD 套接字模型。
【问题讨论】:
-
我在一本书中找到了一些很好的信息,为我解决了这个问题。如果我能再次找到该段落,我会将其添加为评论。基本上它证实了我的怀疑。 1) 您不能指定要发送的端口 from。 2)使用UDP时无需绑定。使用 sendto() 后,套接字可以重用以在发送第一个请求的端口 from 上接收数据。在我阅读的多个文档中,这种行为并不明显,这对我来说似乎很奇怪。我看看能不能找到那个参考资料。