networking - 带有 WiFi Shield 的 Arduino 可以使用多播 IP 发送 UDP 消息吗?

标签 networking udp arduino wifi upnp

我有一个带有 WiFi 扩展板的 Arduino Uno R3。 WiFi shield 具有最新的固件 (V1.1.0)。简而言之,我正在尝试通过 Android 智能手机与 Arduino 进行通信。通过使用路由器分配的本地 IP,我已经成功地在本地执行此操作;但是,现在我想通过不在同一网络上安装 Android 来扩展它。例如,在 Android 设备上从世界任何地方与 Arduino 通信。我知道我可以通过简单地进入我的路由器配置并设置一个端口转发到 Arduino 来做到这一点;但是,我想通过使用通用即插即用 (UPnP) 来解决这个问题。为了能够在网络上定位 Internet 网关设备,我必须能够使用多播地址 239.255.255.250:1900 发送 UDP 消息。这就是我的问题发生的地方。似乎 WiFi 屏蔽无法使用最新的 WiFi 库通过多播地址发送 UDP 数据包。有没有办法修改 WiFi 库,使其成为可能?

注意:我可以在 Arduino 上使用单播地址成功发送和接收 UDP 数据包,只是不使用多播。

此外,还有一个通过 Arduino 和以太网扩展板执行此操作的库位于:https://github.com/deverick/Arduino-Upnp-PortMapping .我试图修改这个库以适用于 WiFi 屏蔽。我假设以太网库能够使用多播地址发送 UDP 数据包,因为该库正是这样做的。

编辑:当我说 WiFi 屏蔽“不能”时,我的意思是因为我无法使用多播地址发送 UDP 数据包。我没有收到我知道的错误;代码运行没有错误,除了它实际上没有发送数据包的事实。我正在 GitHub 上使用最新的 Arduino WiFi 库:https://github.com/arduino/Arduino/tree/master/libraries/WiFi .我只是用 239.255.255.250 和端口 1900 开始一个数据包,将一个字符串写入套接字,然后结束数据包以发送它。数据包从未真正被传输。如果我使用它的本地 IP 向我的 PC 发送数据包,它就像一个魅力。 WiFi 库似乎不支持使用多播地址发送数据包的能力。

最佳答案

草图 Arduino 和 PIC 固件,用于 Wifly RN-XV 调制解调器配置,没有 Wifly 库和前端:https://dl.dropboxusercontent.com/u/101922388/WiflySanUSB.zip
输入浏览器地址栏:192.168.1.195/YT 切换 Led 并打开 HTML 页面。
使用此固件和 Wifly,微 Controller 可以是服务器(通过地址栏中的 192.168.1.195/YT 切换 LED 信号)
或客户端(AD 转换器值插入谷歌数据库)。

关于networking - 带有 WiFi Shield 的 Arduino 可以使用多播 IP 发送 UDP 消息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22271455/

相关文章:

c sendto函数在linux2.6.29中设置 “network is unreachable” errno

arduino - ESP32-WROOM-32 与 ESP32-WROVER

用于通过 UDP 接收 GPS 数据的 PHP/JS/Bash 脚本

C++ UDP 服务器故障

c++ - Teensy/Arduino 库编译错误

arduino - wifi串口板和Arduino Uno板上的esp8266

algorithm - 通过网络同步计数器

networking - 创建 ifcfg-eth1 时网络没有合适的设备

mysql - 将 mysql 数据库移动到另一个 Amazon EC2 实例的性能影响

FFMPEG 和 FFPlay 可以从一个 ip 访问 rtsp 流,但不能从另一个 ip