0

我已经实现了一个简单的 UDP ping/pong 协议来发现连接到同一 WiFI 路由器的其他计算机。这在许多 WiFI 和以太网路由器上都可以正常工作,但是当我上街试一试时,许多公共 WiFI 网络似乎要么禁用了 UDP 广播/多播,要么完全禁用了 UDP。

我还有哪些其他选项可以发现连接到 WiFi 路由器的计算机?(我很想在我的网络成员之间创建一个 Ad-Hoc 网络,但这是不可能的)

我正在考虑暴力强制 TCP 尝试(尝试打开与我的子网络上所有可能的 IP 的连接),但这将非常昂贵,我必须循环几次,仍然找不到最近连接到网络的每台机器。

4

2 回答 2

6

没有简单的方法可以仅发现“计算机”。但是,您可以找到几乎所有使用 ARP 请求的网络设备。

步骤是:

  1. 连接到网络
  2. 获取网络IP地址范围(例如:“192.168.0.0/24”)
  3. 为这个范围内的每个可能的地址发送一个 ARP 请求 ("192.168.0.1" => "192.168.0.254")
  4. 等待回复

通常,网络设备会响应 ARP 请求,因为 IPv4 需要 ARP 才能工作。

您可以在此处找到其他资源。

注意:您可能需要拥有管理员权限(UNIX 上的 root)才能执行此操作。发送伪造的 ARP 请求通常需要提升权限。

另一种方法是发送广播 ping(在 UNIX 操作系统上是 ping -b 192.168.0.255)。但 Windows 计算机(和其他一些设备)通常不会响应此类 ping。

于 2010-03-29T07:50:58.740 回答
0

你可以试试bonjour,也许。

此外,在许多接入点上,可以禁用客户端到客户端的通信。这可能是您在测试期间遇到的问题。

于 2010-03-28T08:18:28.413 回答