可靠地向网络广播消息

可靠地向网络广播消息

我在 Arduino(它是一个嵌入式平台)上编写了一些软件,用于向255.255.255.255端口广播 UDP 消息8888。该硬件通过 wifi 连接到本地网络,然后通过路由器通过 DHCP 为其提供 IP 地址。

在我的计算机(通过 wifi 连接到同一个网络)中,我创建了一个 MAX/MSP 草图,它可以监听端口中的 UDP 消息8888,而且我可以毫无问题地接收从 Arduino 发送的所有消息。

我现在需要做的是让这个系统在我无法控制的网络上工作。我只需要能够将两个设备插入网络,并能够让一个设备向另一个设备发送消息,就像在受控环境中一样。目标是能够使这个设置具有便携性,并且只需进行最少的设置(想想交互式艺术装置)。发送消息是255.255.255.255广播消息的可靠方式吗?

回答此问题时你可以假设以下事项:

  1. 数据包相对较短(少于 150 字节)并且每秒广播一次或更少。
  2. 这些网络将是公共 WiFi 网络,例如咖啡店、普通家庭 AirPort Express,甚至可能是电话公司免费提供的网络或机场网络。
  3. 我无法配置特定 IP 来从嵌入式系统发送消息,因为我无法在旅途中编译代码并上传到它。嵌入式系统需要一种方法来发送消息,无论它链接到什么。

编辑:我说的“可靠”并不意味着每个数据包每次都必须到达目的地。在这个应用程序中,即使 50% 的数据包丢失也是可以接受的。我想知道的是上述 IP 地址是否适用于所有网络设置。

答案1

不,它并不总是有效,特别是在一些公共 wifi 网络中,明确禁用一个 wifi 设备与其他 wifi 设备的通信(出于安全原因)

在某些出现问题的情况下,如果你在互联网上的某个地方有一台服务器,并且你的两个设备都与该服务器通信以交换数据,那么你可能会更幸运。

还要注意,有时连接到网络可能比“这是 ESSID 和 WPA 密码”更复杂(对于机器而言)。事实上,我离这个很近:它是一个强制门户,要求您输入您的电话号码,然后它会向您发送带有代码的短信,您必须在网页上确认该代码 - 然后该代码将链接到该 Wifi MAC,而不是其他。因此,您的设备必须至少具有人为访问(显示器和键盘),才能在“几乎所有”场景中设置工作。

您可以尝试通过本地广播来实现您的想法,如果不行的话,让软件回退到上面的互联网访问......

答案2

根据定义,UDP 是无连接的,因此,只有在协议之外进行握手或错误检查才有可能实现可靠性。

我的第一直觉是你不应该在 255.255.255.255 上进行广播,广播域越小,结果就越好。

除此之外,这个问题在我脑海里触发了所有的信息安全警报。我的第二个想法,如上所述,要求你至少了解你所连接的网络。而你明确提到不具备这些知识,这让这件事进入了战争驾驶或 MITM 的范畴。

编辑- 对于艺术展览来说,真的需要可靠性吗?似乎多一点随机性会更好。

相关内容