如何判断同局域网下手机是否在线 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
horou
V2EX    程序员

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

  •  
  •   horou 2023-05-08 16:46:27 +08:00 3407 次点击
    这是一个创建于 936 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    第 1 条附言    2023-05-08 20:51:30 +08:00

    很多v友询问我这边对设备在线的定义,可能我表达的不是很清楚,我这里统一回复一下

    我这边的需求对设备在线的定义是:设备如果是一直连着路由器的wifi,就认为是在线,如果设备离开wifi范围,或者设备关机,切换网络导致wifi断开了,就代表设备是离线状态。

    31 条回复    2023-05-09 08:44:32 +08:00
    dxgfalcongbit
        1
    dxgfalcongbit  
       2023-05-08 16:48:34 +08:00 via Android
    我是在路由器里查看当前在线设备
    Puteulanus
        2
    Puteulanus  
       2023-05-08 16:48:34 +08:00
    淘宝有卖蓝牙探针设备的,不过有点贵好像
    uplee
        3
    uplee  
       2023-05-08 16:48:56 +08:00
    以前简单搞过,记录手机的 MAC 地址,然后查局域网在线设备
    chenxytw
        4
    chenxytw  
       2023-05-08 16:50:01 +08:00
    一个侧信道思路(
    很多路由器都有的已连接设备列表 api 。
    brader
        5
    brader  
       2023-05-08 16:51:29 +08:00
    部分手机息屏后就 ping 不通了,会超时。
    其实这个没问题的吧,我手机就会,我观察过路由器后台的在线设备列表,其实手机息屏后,设备列表就没有手机了,说明下线了,没问题的
    horou
        6
    horou  
    OP
       2023-05-08 16:53:55 +08:00
    @uplee 查局域网在线设备这一步是怎么做的,还有就是我只能拿到手机的 ip 地址,没法拿到手机的 mac
    DCELL
        7
    DCELL  
       2023-05-08 16:54:34 +08:00
    局域网广播?
    wegfdhsak
        8
    wegfdhsak  
       2023-05-08 16:55:28 +08:00 via iPhone
    扫描一下不就好了?
    horou
        9
    horou  
    OP
       2023-05-08 16:55:28 +08:00
    @chenxytw 想实现一个通用的做法,用路由器自带的 api ,不同厂商的路由器 api 应该不一致吧
    horou
        10
    horou  
    OP
       2023-05-08 16:57:38 +08:00
    @wegfdhsak 没搞过...,应该用什么方式扫描呢
    yu13n
        11
    yu13n  
       2023-05-08 16:58:02 +08:00
    arp 扫描?
    nigelboy
        12
    nigelboy  
       2023-05-08 17:00:21 +08:00
    promethous 有个黑盒探测的插件,通过 ping 或者端口探测设备是否在线
    proxytoworld
        13
    proxytoworld  
       2023-05-08 17:04:24 +08:00
    我怎么感觉你这是灰产
    uplee
        14
    uplee  
       2023-05-08 17:04:28 +08:00
    @horou 我当时是抓的路由器在线界面,你可以试试用命令,比如 win 下的 arp -a
    horou
        15
    horou  
    OP
       2023-05-08 17:07:05 +08:00
    @proxytoworld 不是灰产...功能实现的是通过 ip 绑定设备,如果设备离线就解除绑定,目前就差一个设备在线的判断
    Andim
        16
    Andim  
       2023-05-08 17:07:53 +08:00 via iPhone
    iOS 上有 HE Network Tools 可以查看 arp NDP
    zbatman
        17
    zbatman  
       2023-05-08 17:08:08 +08:00
    打开手机屏幕,看一下有没有 wifi 图标
    debuggerx
        18
    debuggerx  
       2023-05-08 17:10:53 +08:00
    mDNS/DNS-SD
    greatbody
        19
    greatbody  
       2023-05-08 17:13:25 +08:00
    @brader 同意你的观点。OP 最好解释下自己对于手机在线的定义,否则我认为 @brader 这个回答已经能解答你的问题了。
    mk0114
        20
    mk0114  
       2023-05-08 17:20:05 +08:00
    ping 不通就是离线,息屏也是离线,没毛病。
    565656
        21
    565656  
       2023-05-08 17:20:34 +08:00
    ios 自带私密 mac 地址,导致每一次链接 wifu 后 ip 都会变,要关下
    jstony
        22
    jstony  
       2023-05-08 17:29:40 +08:00   1
    op 如果可以给“在线”做个定义,应该就会清晰很多。比如息屏 ping 不通了,这个算在线还是不在线?如果持续 30 分钟都 ping 不通,算在线还是不在线?这个定义清晰了,op 的问题应该就迎刃而解了吧
    lovelylain
        23
    lovelylain  
       2023-05-08 17:35:11 +08:00
    路由器 arp 表,设备要能上网得过路由器,过了路由器就会刷新 arp 表,所以路由器 arp 表是最靠谱的。
    yufeng0681
        24
    yufeng0681  
       2023-05-08 17:42:58 +08:00
    原始需求并没有讲到点子上。
    手机设备下线,IP 解除绑定,这个场景的描述都不全。
    手机不在局域网了,ip 自然就不用了,路由器自己有算法老化,让网络其他设备使用 ip 地址。
    你做的服务为何需要知道手机的 ip 地址?
    ochatokori
        25
    ochatokori  
       2023-05-08 17:48:53 +08:00 via Android
    查 iptables 看看这台机器有没有流量出来,几乎没有手机没有系统级长链接
    dabang007
        26
    dabang007  
       2023-05-08 17:52:49 +08:00
    这个最简单用 ESP8266 就可以做(前提是 2.4G Wifi),定期看手机数据是否有收发,配合老化算法
    miyuki
        27
    miyuki  
       2023-05-08 20:03:51 +08:00
    ping 主机名?
    mohumohu
        28
    mohumohu  
       2023-05-08 21:16:46 +08:00
    homeassint 自带插件就有这功能,是用的 Nmap Tracker
    mgrddsj
        29
    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
        30
    lskjdfgl  
       2023-05-09 08:36:39 +08:00
    @uplee 判断 mac 会有问题,现在的设备大部分都是随机 mac
    wangtian2020
        31
    wangtian2020  
       2023-05-09 08:44:32 +08:00
    像小米路由器管理后台有在线设备列表的,模拟请求借路由器的管理 web 的 API 就好了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     821 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 20:23 PVG 04:23 LAX 12:23 JFK 15:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86