我用的几款无线路由器,台式机连接到无线路由器的网口,而手机连接到无线路由器的 WIFI.
我弄了两个方案来自动找到手机的 IP 地址,都不成功,前提是直接使用 IP 连接都没有问题。
1. 使用广播地址 255.255.255.255 发送 IP 包失败。手机根本没有收到。手机上面不好抓包。但应该就是没收到。使用 192.168.1.255 这个广播地址也不行。服务器运行在另外一个台式机上面也没有问题。但还没试过跑在连接 WIFI 的笔记本电脑不行——但多半也是不行的。
2. 计算出 192.168.1.0/24 这个网段一共有 254 个 IP 地址,直接向这些 IP 地址发送偶尔能行偶尔不行。原因是因为通过一个 socket 给一堆未知的 IP 地址发数据需要先 ARP 比较慢。除非,把这个 udp socket 的发送队列弄大一点,等待回包的时间也长一些。这时候成功率就会比较高一些。
假如路由器就是不愿意广播,也不支持组播。还有什么好办法没有?upnp 协议是不是适合大多数局域网发现场景。
--
修改:hgoldfish FROM 183.253.143.*
FROM 183.253.143.*