gpt4 book ai didi

android - 在本地网络中发现嵌入式设备?

转载 作者:太空狗 更新时间:2023-10-29 12:40:13 29 4
gpt4 key购买 nike

我正在尝试构建一个可以连接到路由器的嵌入式设备。但我想知道设备是否已连接到路由器或未使用 PC 或移动设备。

例如:PC 如何检测 google chromecast 是否连接到同一网络?

  • 我是否需要在特定端口上与网络中的每个 IP 通信才能询问?
  • 或者我是否需要让嵌入式设备每 N 秒广播一些信息?

谢谢,

最佳答案

无论如何,您应该考虑在您的嵌入式设备上执行 Gratuitous ARP。免费 ARP 将向您 LAN 上的所有设备宣布新设备已加入,以便它们可以更新其 ARP 缓存。

就发现您的嵌入式设备的 PC/移动设备而言,您有几种选择:

选项 1

如果我们可以假设这是一个典型的扁平家庭网络,其中所有设备都在一个子网上并且只有一个网关路由器 * 那么您可以为您的嵌入式设备提供一个唯一的 OUI 。如果您打算出售此设备,则需要 apply for an OUI with the IEEE anyway,除非制造您的芯片组的人已经为其提供了 MAC 地址。您的 PC/移动应用程序可以定期检查其 ARP 缓存以查找与您期望的唯一 OUI 相匹配的 OUI。

如果网络不平坦并且有多个路由子网或 VLAN,这将不起作用。这是一个可能的场景:假设您的嵌入式设备连接到客户端网桥范围扩展器。如果您的 PC/移动应用程序位于主接入点上,它将永远看不到嵌入式设备的 MAC 地址——相反,它会看到客户端网桥的 MAC 地址。多个 IP 将映射到客户端桥,因为客户端桥和客户端桥将交换数据包。

*我将路由器一词用斜体表示,因为大多数家用路由器只是在 WAN/LAN 之间进行 NAT,而路由器的 LAN 端就像第 2 层交换机一样运行。

选项 2

您可以执行广播 ping 请求,例如。 ping xxx.xxx.xxx.255。您将从所有接受广播 ping 请求的设备收到响应。只要确保您的设备可以。然后,一旦您有了 IP 地址列表,您就可以尝试使用所有这些 IP 地址在您选择的任意端口上打开 TCP 套接字,然后发送一些唯一的握手数据包。您的嵌入式设备应该监听这个端口,并且应该对这个独特的数据包有一些独特的回复。 LAN 上的大多数设备通常不应允许此套接字打开,但如果它们打开,它们不应该理解您发送的唯一握手消息。

选项 3

发送带有一些独特握手负载的广播 UDP 数据报。然后你的嵌入式设备应该用一些独特的响应来回复这个广播 UDP 数据包的发送者。在您的 PC/移动应用程序收到此响应后,您可以使用响应来自的 IP 地址打开 TCP 套接字。

关于android - 在本地网络中发现嵌入式设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27579060/

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