adb 客户端能自动发现局域网中的 adb 服务端,当我手机开启 wireless adb 后,总能收到局域网内其他客户端发出的连接请求,开始以为是通过探测默认端口 5555 实现的,但我把服务端端口改成其他后,仍然能收到连接请求,不知道这是如何实现的,难道是服务端主动向局域网内广播自己的配置?

7 条回复    2021-07-30 12:35:01 +08:00

learningman
    1

learningman   1 天前

我知道有个叫 SSDP 的协议,估计是差不多的东西吧
yukiww233
    2

yukiww233   1 天前

问下局域网内其他人(adb client)是怎么发送请求连接的呗
没准人家写了个工具遍历局域网内端口
wjploop
    3

wjploop   1 天前

有趣的问题

我也认为不是服务端自己广播自己的配置,手机不该浪费自己电量来做这事,而是客户端主动探测出来的。

客户端如何探测?

使用 nmap 工具查询当前局域网活跃的主机以及开放的端口 /服务,我下载玩了会,当手机开放无线 adbd 时确实可以检测到,且手机开放的端口很少,根据手机开放端口很少这点,客户端只要尝试连接就行了。

不知道现实中你指的客户端是谁,可能是公司的测试人员?由于 IP 动态分配的原因连上了你手机?

jim9606
    4

jim9606   1 天前   ❤️ 3

Android 的 adbd 激活无线调试后会通过 mDNS 发布一个_adb-tls-connect._tcp 服务。
adb v30 开始设置环境变量 ADB_MDNS_OPENSCREEN=1 后,adb devices 会利用 mDNS 自动发现设备。
andyskaura
    5

andyskaura   1 天前

@jim9606 感谢 涨姿势了 通过 mdns 发现设备
MLawliet
    6

MLawliet   23 小时 31 分钟前

@wjploop 目前发现是局域网中跑着 Android studio 、Unity 这类工具的设备会主动向开启无线的 adbd 发起连接请求,这些设备上肯定没有人为跑检测程序

@jim9606 非常感谢,*次知道 mDNS…

xingstar
    7

xingstar   4 小时 36 分钟前

真是学习了,感谢(⊙o⊙)…
aabbcc112233
    8

aabbcc112233   1 天前

@MLawliet AS 怎么能够向已开启无限调试的设备发起连接呢?没看到入口
MLawliet
    9

MLawliet   4 小时 22 分钟前

@aabbcc112233 自动的啊,AS 会自动执行 adb devices 命令查找局域网内开启调试的设备然后连接