gpt4 book ai didi

sockets - 作为 UDP 客户端的 Netcat 不接收来自 Arduino Wifi Shield 的响应数据包。简单的 C UDP 客户端。为什么?

转载 作者:行者123 更新时间:2023-12-03 11:50:04 25 4
gpt4 key购买 nike

我正在测试 WiFi UDP Send and Receive String使用 Arduino Wifi Shield(2013 年 3 月最新固件更新)的示例 Arduino 代码,我遇到了无法解释的行为。

预期操作

Arduino 在其本地任意端口上从路由器上的另一台计算机接收 UDP 数据包 - remoteIP:remotePort。它通过将自己的 UDP 数据包发送回 remoteIP:remotePort 来向客户端确认它已收到数据包。

我想我会使用 netcat 进行测试。 netcat 将发送 UDP 数据包,Arduino 接收,但 netcat 没有接收到 Arduino 发送的数据包。怪在netcat,因为我用了一个Simple C UDP Client并且该客户端将收到 Arduino 服务器 UDP 响应。

有谁知道 Netcat 中有什么多余的东西会导致这种情况?在 TCP 上使用 netcat 与使用未知协议(protocol)的服务器进行交互时,我注意到了类似的问题。交互不是“原始的”,似乎应该显示的东西没有显示出来,比如来自 UDP 服务器的这些 UDP 数据包。是不是UDP报文的构成不满足netcat?

Arduino UDP Server Code

Simple C UDP Client Code

最佳答案

您的代码与 nc 之间的主要区别在于,您使用未连接的套接字并在 sendto 调用中指定接收者,而 nc 将使用连接的套接字。这意味着,您的套接字将接受来自任何地址的回复,而 nc 将只接受来自将请求发送到的相同 IP 和端口 的回复。我不知道你使用的 Arduino udp 库,但从简短的代码来看,我没有看到任何类似使用 udp 连接的东西,所以我认为我的理论是正确的。如果您使用 tcpdump/wireshark,这就是我希望您在 IP cip 和端口 cport 上与您的客户端以及 IP cip 和端口 32000 上的 Arduino 看到的(匹配您的示例 C 代码):

--> request from cip:cport to   aip:32000
<-- reply to cip:cport from aip:random_port

但是如果你想让它与 nc 一起工作,你需要的是

--> request from cip:cport to   aip:32000
<-- reply to cip:cport from aip:32000

关于sockets - 作为 UDP 客户端的 Netcat 不接收来自 Arduino Wifi Shield 的响应数据包。简单的 C UDP 客户端。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21746501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com