.Net UdpClient Receive - 关于为什么它没有 return 任何东西的技术问题

.Net UdpClient Receive - A technical question about why it doesnt return anything

我正在根据设备的 IP 地址和端口与设备建立 UDP 连接(成功)。 我可以成功地向它发送消息(以字节编码)。 但是,我没有看到 client.Receive() 方法返回的响应。

我向您提出的技术问题与此 Receive() 方法有关。

也许我的理解完全错误,但我想我用来连接设备的 IP 地址 + 端口应该与我调用 Receive() 方法时相同。

但根据示例,情况似乎并非如此。

Can someone explain to me why the same IP Address + Port is not used when calling Receive()?

A) Note that i can see a response using a sniffer like Wireshark. But i just dont see the response returning from the C# udpClient.Receive(ref endpoint) method itself.

B) Also, i am using this API document which says that the device (drone) can receive and send a response on the same IPAddress + port.

UDP 数据包是无状态的,没有真正的连接。与 TCP 流不同,connect 方法不会触发任何网络数据包。它所做的只是提供一个默认地址,因此您在发送新数据包时无需提供默认地址。并设置一个数据包过滤器,以便只接收与该远程地址(包括端口号)完全匹配的数据包。

receive 方法仍应为您提供远程端点的地址。

请注意,如果您没有将 UdpClient 绑定到特定端点,并且机器有多个网络地址,OS 可能会从与您预期不同的地址发送数据包。