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

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

概述我正在尝试构建将连接到路由器的嵌入式设备.但我想知道设备是否已连接到路由器,还是未使用PC或Mobile.例如:PC如何检测Googlechromecast是否连接在同一网络上?>我需要在特定端口上与网络中的每个IP通信吗?>或者我是否需要让嵌入式设备每N秒广播一些信息?谢谢,解决方法:无论如何,您

我正在尝试构建将连接到路由器的嵌入式设备.
但我想知道设备是否已连接到路由器,还是未使用PC或Mobile.

例如:
PC如何检测Google Chromecast是否连接在同一网络上?

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

谢谢,

解决方法:

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

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

选项1

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

如果网络不平坦并且有多个路由子网或VLAN,则此方法将无效.这是一种可能的情况:假设您的嵌入式设备连接到客户端桥接范围扩展器.如果您的PC / Mobile应用程序位于主访问点上,它将永远不会看到嵌入式设备的MAC地址-而是会看到客户端网桥的MAC地址.多个IP将映射到客户端网桥,因为客户端网桥和客户端网桥将交换数据包.

*我将路由器一词用斜体表示,因为大多数家用路由器仅在WAN / LAN和路由器的LAN侧之间进行NAT,就像第2层交换机一样.

选项2

您可以发出广播Ping请求,例如. Ping xxx.xxx.xxx.255.您将收到所有将接受广播Ping请求的设备的响应.只要确保您的设备可以.然后,一旦有了IP地址列表,您就可以尝试通过您选择的任意端口打开带有所有这些IP地址的TCP套接字,然后发送一些唯一的握手数据包.您的嵌入式设备应该正在侦听此端口,并且应该对此唯一的数据包有一些唯一的答复.局域网上的大多数设备通常都不应打开此套接字,但如果这样做,则它们不应理解您发送的唯一握手消息.

选项3

发送带有一些唯一握手有效负载的广播UDP数据报.然后,嵌入式设备应使用一些唯一的响应来答复此广播UDP数据包的发送方.在您的PC /移动应用收到此响应后,您便可以打开一个TCP套接字,并使用其响应的IP地址.

总结

以上是内存溢出为你收集整理的android-在本地网络中发现嵌入式设备?全部内容,希望文章能够帮你解决android-在本地网络中发现嵌入式设备?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1079359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存