如何检测 WiFi 网络中是不是存在设备?
Posted
技术标签:
【中文标题】如何检测 WiFi 网络中是不是存在设备?【英文标题】:How to detect presence of a device in a WiFi network?如何检测 WiFi 网络中是否存在设备? 【发布时间】:2015-05-31 21:53:48 【问题描述】:我正在开发一个基于 Intel Edison(运行基于 Debian 的 Ubilinux)的项目。我需要 Edison 执行一些代码,我的 android 手机(运行 CM11)连接到与 Edison 相同的 WiFi。我如何检测我的手机在爱迪生的存在吗?我尝试了以下方法。
1.Pinging:但问题是路由器每次分配不同的IP,因为DHCP。所以,我不会知道我手机的IP地址。 有什么方法可以根据设备的 MAC 地址 ping 通吗?
2.我想从我的手机广播一个特殊的发现数据包,只要它连接到 WiFi。但是,我不知道从哪里开始这种方法。
【问题讨论】:
这不是 python 问题。这是关于 wifi 协议及其在给定操作系统中的暴露的问题。一旦你知道在那里做什么,你需要从 python 来做——但这将是一个不同的问题。 @deets 我同意。但是,您评论的第二部分解释了为什么我标记了“python”:) @Heisenberg 如果有任何一个问题对您有帮助(并且 arp 是要走的路,所以他们都这样做了..)点击问题旁边的勾号。 【参考方案1】:找到mac地址可能会奏效。基本上你可以运行arp
命令来查看哪个mac-address 匹配哪个IP。这里有一个关于这样做的问题:
Obtain MAC Address from Devices using Python
【讨论】:
【参考方案2】:Arprequest 允许您在 Python 中“解析”MAC 地址:
from arprequest import ArpRequest
>>> ar = ArpRequest('10.0.0.1', 'eth0')
>>> ar.request()
True
在循环中弹出它,你就有了一个 MAC 监视器。
作为替代方案,您可以采用基于事件的方法并使用 Scapy 监控来自您的 Android 设备的 DHCP 请求,并在它看到时采取行动。
【讨论】:
以上是关于如何检测 WiFi 网络中是不是存在设备?的主要内容,如果未能解决你的问题,请参考以下文章
设备在Android中连接到WiFi时如何获取蜂窝网络的IP地址
如何检测系统是不是连接到 ad hoc 或基础设施 wifi?
网络适配器的microsoft virtual wifi miniport adapter 设备无法启动。 (代码 10