检测Android手机是否连接到LAN

时间:2017-10-03 19:24:14

标签: android python wifi

大家好,我正在为我的Raspberry Pi家庭服务器编写一个智能家庭扩展。为此,我想通过检查智能手机是否连接到本地网络来了解何时有人在家。

不幸的是,到目前为止,ping Android设备的情况最不可靠。这取决于睡眠状态,Nexus 5X根本没有响应ping。我也不想摆弄睡眠设置,因为这会缩短电池寿命。

我的路由器说设备已连接,但我不知道如何传递这些信息。有什么方法我可以确定任何智能手机都通过Python连接到WiFi吗?

2 个答案:

答案 0 :(得分:0)

我相信这个问题has been asked before但是我花了一些谷歌搜索才找到它。简短的回答是肯定的,但需要了解路由器的服务,DNS和DHCP。

答案 1 :(得分:0)

好的,简单的方法是使用映射函数的'python-nmap'模块。

import nmap
nm = nmap.PortScanner()
nm.scan(hosts='192.168.0.1/24', arguments='-n -sP -PE -PA21,23,80,3389')
hosts_list = [(x, nm[x]['status']['state']) for x in nm.all_hosts()]
for host, status in hosts_list:
     print('{0}:{1}'.format(host, status))

其中'192.168.0.1'是您的路由器IP。这将返回所有已连接设备的列表,包括任何正在睡眠的Android设备。

192.168.178.1:up
192.168.178.2:up
...

不幸的是,这个python-nmap不使用Python3,这是我仍需要解决的问题。