如何判断同局域网下手机是否在线

2023-05-08 16:46:27 +08:00
 horou

在拥有手机局域网 ip 的情况下我想要判断同局域网下手机是否还处于连接 wifi 中,应该如何做

目前的做法是每隔一段时间 ping 一下手机的 ip ,但是有个问题是,部分手机息屏后就 ping 不通了,会超时,如何解决这个问题,或者有其他的替代方案没

2435 次点击
所在节点    程序员
31 条回复
565656
2023-05-08 17:20:34 +08:00
ios 自带私密 mac 地址,导致每一次链接 wifu 后 ip 都会变,要关下
jstony
2023-05-08 17:29:40 +08:00
op 如果可以给“在线”做个定义,应该就会清晰很多。比如息屏 ping 不通了,这个算在线还是不在线?如果持续 30 分钟都 ping 不通,算在线还是不在线?这个定义清晰了,op 的问题应该就迎刃而解了吧
lovelylain
2023-05-08 17:35:11 +08:00
路由器 arp 表,设备要能上网得过路由器,过了路由器就会刷新 arp 表,所以路由器 arp 表是最靠谱的。
yufeng0681
2023-05-08 17:42:58 +08:00
原始需求并没有讲到点子上。
手机设备下线,IP 解除绑定,这个场景的描述都不全。
手机不在局域网了,ip 自然就不用了,路由器自己有算法老化,让网络其他设备使用 ip 地址。
你做的服务为何需要知道手机的 ip 地址?
ochatokori
2023-05-08 17:48:53 +08:00
查 iptables 看看这台机器有没有流量出来,几乎没有手机没有系统级长链接
dabang007
2023-05-08 17:52:49 +08:00
这个最简单用 ESP8266 就可以做(前提是 2.4G Wifi),定期看手机数据是否有收发,配合老化算法
miyuki
2023-05-08 20:03:51 +08:00
ping 主机名?
mohumohu
2023-05-08 21:16:46 +08:00
homeassint 自带插件就有这功能,是用的 Nmap Tracker
mgrddsj
2023-05-09 01:47:42 +08:00
其实“部分手机熄屏后就 ping 不通了”有可能是设备锁屏后会断开 WiFi 来省电导致的。

如果是 Android 手机:

部分手机在设置 - WiFi - 高级 - “在休眠状态下保持 WLAN 网络连接” - 始终,即可保持熄屏后保持 WiFi 连接。

Google 似乎在某个版本的 Android 里移除了这个选项。对于那些没有这个选项的设备,可以通过 adb 命令更改:

adb shell settings put global wifi_sleep_policy 2

其中,0 = 永不,1 = 仅充电时,2 = 始终.
lskjdfgl
2023-05-09 08:36:39 +08:00
@uplee 判断 mac 会有问题,现在的设备大部分都是随机 mac
wangtian2020
2023-05-09 08:44:32 +08:00
像小米路由器管理后台有在线设备列表的,模拟请求借路由器的管理 web 的 API 就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/938324

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX