当前位置: 首页 > 知识库问答 >
问题:

Netcat作为UDP客户端不接收来自Arduino Wifi屏蔽的响应数据包。简单的C UDP客户端可以。为什么?

李云
2023-03-14

我正在测试WiFi UDP发送和接收字符串示例Arduino代码与Arduino Wifi屏蔽(最新固件更新2013年3月),我得到的行为我无法解释。

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

netcat将发送UDP数据包,Arduino接收,但是netcat没有收到Arduino发送的数据包。责任在于netcat,因为我使用了一个简单的C UDP客户端,该客户端将接收Arduino服务器UDP响应。

有人知道Netcat中有什么额外的污垢会导致这种情况吗?当使用TCP上的netcat与使用未知协议的服务器交互时,我注意到类似的问题。交互不是“原始的”,事情没有出现,就像UDP服务器上的这些UDP数据包一样。是不是UDP数据包的组成让netcat不满意?

ArduinoUDP服务器代码

简单C UDP客户端代码

共有1个答案

锺离浩慨
2023-03-14

代码与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
 类似资料:
  • 我在实现UDP连接时遇到了麻烦,因为当我在局域网内尝试它时,它是有效的,但是当NAT内部的人试图连接到公共服务器地址时,它会失败,因为从服务器作为响应发送的数据包永远不会到达客户端。 我的协议如下: 客户端A向服务器发送一个字节作为连接请求 服务器B为客户端创建一个新的套接字,并从那里向recvfrom()调用中报告的客户端端口响应一个字节。永远不会联系到客户 我也试过: 执行许多调用,每个调用在

  • 我正在尝试使用Boost::asio进行简单的UDP客户端/服务器测试。我已经阅读了留档和官方教程,但我仍然无法正确使用。 我的问题特别是在客户端。下面是我希望客户端做的:它必须向运行在的服务器发送一个简单的数据报,然后侦听服务器发送的响应数据报。但这不是我得到的。看起来客户端正在发送数据报,但是在收到自己的数据报之后!在有人问“不”之前,服务器没有运行:-) 函数< code>send_data

  • udp 客户端 udp 客户端 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * *//* * 程序清单:udp 客户端 * * 这是一个 udp 客户端的例程 * 导出 u

  • 我想做一个项目,其中数据保存在SD卡上,然后使用以太网屏蔽,使用ftp客户端arduino将这些数据发送到ftp服务器。服务器我有一个免费的主机。 以下是ftptest中的数据服务器: 这里的结果从串行监视器arduino ide 这里代码arduino(我从http://playground.arduino.cc/Code/FTP的代码) 如果有人告诉我什么可以去,我做错了什么? 我可以使用fi

  • 我是一个使用python进行套接字编程的初学者。我正在做我的课程项目。我的项目的一部分需要用不同的端口发送和接收UDP消息。提供了名为robot的服务器程序,我需要编写名为student的客户端程序,它可以与机器人进行交互。因此,我不能显示服务器程序中的所有源代码。 这是服务器程序中与UDP套接字相关的部分 这是我的客户端程序。s3 是 UDP 套接字。我可以成功地向服务器程序发送消息,但无法从中

  • Git 为开发者提供了如此优秀的体验,许多人已经找到了在他们的工作站上使用 Git 的方法,即使他们团队其余的人使用的是完全不同的 VCS。 有许多这种可用的适配器,它们被叫做 “桥接”。 下面我们将要介绍几个很可能会在实际中用到的桥接。 Git 与 Subversion 很大一部分开源项目与相当多的企业项目使用 Subversion 来管理它们的源代码。 而且在大多数时间里,它已经是开源项目VC