我是 255.255.255.0 子网中的主机 - 符合 RFC1918。
有哪些方法可以(不迭代 254 个地址)映射我本地子网中的 IPEndPoint?
答案1
nik 很接近;您确实需要 ping 广播,但并非所有系统都会直接响应。
注意广播地址不同于你的网络地址。如果你的 IP 是192.168.1.42
,你的网络掩码是255.255.255.0
,那么你的网络地址是192.168.1.0
,你的网络广播地址是192.168.1.255
。
对网络进行 Ping 广播:
- Linux:
ping 192.168.1.255 -b
- 操作系统:
ping 192.168.1.255
- Linux:
检查 ARP 缓存中的响应:
- Linux:
arp
- 操作系统:
arp -a
- Linux:
奇怪的是,当我 ping 广播地址时,我收到了网络上一台 Win-7 机器的响应,但没有显示任何其他机器的响应。我的网络上有 4 台设备(路由器、XP、Win7、Debian);arp
当我在 Debian 和 WinXP 系统上运行上述命令时,所有 3 台远程机器都正确列在输出中。
答案2
如果你发送广播 ping,
ping 网络地址 -b
network_address
您的255.255.255.0
等效 C 类网络在哪里。
所有端点都会回复您。
然后您只需从输出中提取唯一的单个响应 IP 地址。
这意味着,如果您的 IP 地址位于192.168.1.42
C 类网络中。
您可以执行ping 192.168.1.0 -b
并查看(例如)一分钟的输出。
网络中所有连接的端点都将回复此广播地址。