我已经实现了一个简单的UDP ping/pong协议来发现连接到同一个WiFI路由器的其他计算机.这在许多WiFI和以太网路由器上都可以正常工作,但是当我在街上试一试时,许多公共WiFI网络似乎禁用了UDP广播/多播,或者完全禁用了UDP.
我还有哪些其他选择来发现连接到WiFI路由器的计算机?(我想在我的网络成员之间创建一个Ad-Hoc网络,但这是不可能的)
我正在考虑强制TCP强制尝试(试图打开我的子网上所有可能的IP的连接),但这将是非常昂贵的,我将不得不循环几次仍然没有找到最近连接到网络的每台机器.
没有简单的方法来发现只有"计算机".但是,您可以使用ARP请求找到几乎所有网络设备.
步骤将是:
连接到网络
获取网络IP地址范围(例如:"192.168.0.0/24")
发送此范围内每个可能地址的ARP请求("192.168.0.1"=>"192.168.0.254")
等待回复
通常,网络设备响应ARP请求,因为IPv4需要ARP才能工作.
您可以在此处找到其他资源.
注意:为了做到这一点,你可能需要具有管理员权限(UNIX上的root用户).发送伪造的ARP请求通常需要提升权限.
另一种方法是发送广播ping(在UNIX操作系统上ping -b 192.168.0.255).但是Windows计算机(以及其他一些设备)通常不会响应这样的ping.