我已经实现了一个简单的UDP ping / pong协议来发现连接到同一个WiFI路由器的其他计算机。这在许多WiFI和以太网路由器上运行良好,但是当我在街上试一试时,许多公共WiFI网络似乎禁用了UDP广播/多播,或者完全禁用了UDP。
我还有哪些其他选择来发现连接到WiFI路由器的计算机? (我想在我的网络成员之间创建一个Ad-Hoc网络,但这是不可能的)
我正在考虑强制TCP尝试(试图打开我的子网上所有可能的IP的连接),但这将是非常昂贵的,我将不得不循环几次仍然没有找到最近连接到网络的每台机器
答案 0 :(得分:6)
没有简单的方法只能发现“计算机”。但是,您可以使用ARP请求找到几乎所有网络设备。
步骤如下:
通常,网络设备会响应ARP请求,因为IPv4需要ARP才能工作。
您可以找到其他资源here。
注意:您可能需要具有管理员权限(UNIX上的root用户)才能执行此操作。发送伪造的ARP请求通常需要提升权限。
另一种方法是发送广播ping(在UNIX操作系统上ping -b 192.168.0.255)。但Windows计算机(以及其他一些设备)通常不会响应此类ping。
答案 1 :(得分:0)
你可以试试bonjour。
此外,在许多接入点上,可以禁用客户端到客户端的通信。这可能是你在测试过程中遇到的问题。