我有一个需要在同一个端口上传输和接收的应用程序。这可能在两种情况下发生:
PC 与远程硬件通信的地方。它“回复发送者”,因此数据报通过发送端口返回到我的 PC。
PC 与自身对话(环回模式)以进行测试和演示(测试应用程序通过 UDP 将虚假数据馈送到我们的主应用程序)。
这似乎只在尝试实现环回时失败。我可以让它工作的唯一方法是确保首先设置接收器 - 这是我无法保证的。
任何人都可以通过建议一种“正确”的方式来实现 UdpClient(s) 以可靠地处理上述情况,从而帮助缩小我的搜索范围吗?
(我发现与远程硬件可靠工作的唯一解决方案是以双向方式使用单个 UdpClient,尽管我正在使用可能会影响该发现的遗留代码。我尝试使用两个 UdpClients,但他们互相踩脚 - 在某些情况下,一旦启动一个客户端,另一个客户端就无法连接。使用 ExclusiveAddressUse/ReuseAddress 设置以允许端口共享,我几乎可以让它工作,除了接收器必须先开始)
编辑
详细说明:
我们通过 UDP 与外部硬件通信。当它收到我们的通信时,它会回复源地址——所以我们会在同一个端口上接收回消息。这部分工作正常。
但是,如果我尝试使用环回模拟外部硬件(即,我通过“对我自己”的同一个端口发送和接收),我只能在开始传输之前开始接收数据报。效果很好 - 但如果我发送然后尝试接收,我永远不会收到任何数据。在这种情况下,我实际尝试发送的内容无关紧要。
所以我有两个问题:
1)如何管理可靠工作的环回。
2)如何做(1)而不破坏当前工作正常的外部通讯!
当我尝试了 1 或 2 个 UdpClients 和多种不同设置的各种组合(无济于事)时,我只是想知道是否有人设法让 UPD 环回正常工作,因为这可能会给我带来我可以在所有情况下工作的解决方案。
感谢您花时间考虑这个问题...