9

我正在编写一个程序,由于各种原因,您可以在其中连接到 LAN 中的其他计算机。但是,与其输入多台计算机的 IP 地址(很麻烦),我想知道是否有办法列出局域网中所有计算机的 IP 地址。我研究了一整天,还没有找到合适的。这是因为没有这种东西存在吗?先感谢您。

编辑:看起来这篇文章获得了很多观点,我应该发布我的实际解决方案。通常,局域网中计算机 IP 地址的命名约定是相同的。例如 192.168.2.*,* 被替换为任何有效数字。我的程序检测到 IP 地址,将其显示给用户,然后询问前 3 个 IP 块。然后,它通过 ping 并等待响应按给定的 IP 命名约定顺序扫描多达 200 个。没有反应,没有电脑。一旦它知道它背后有一台计算机,它就可以做你可以用 IP 做的所有事情。

4

5 回答 5

7

1) 读取子网掩码并计算您所在子网掩码中的所有 IP 地址。然后您可以使用 ICMP ping(标准 ping)或 ARP ping 列出所有有效的 IP 地址。ARP Ping 在子网设置中非常可靠。

2)你可以nmap列出所有的主机

nmap -nsP 192.168.10.1/254 | grep ^Host
于 2010-01-03T03:44:59.453 回答
6

您真的不会找到比在同一子集上pinging 或ing 地址更可靠的东西。arping在我第一次实习的那天,我为某个软件实现了这个,最后一次我检查(公平地说是几年前),这就是他们仍在使用这个功能的东西。我认为这意味着他们没有找到更好的东西。

找到这些的源代码并将它们翻译成 C# 并不难。ping, arping. 或者,您只需打开命令提示符并执行ping然后解析结果。

于 2010-01-03T03:48:21.677 回答
2

任何主机发现工具都可以在这里为您提供帮助。特别是Nmap肯定会为您提供这些信息,尽管在这种情况下它可能是矫枉过正的。谷歌“ping 扫描”,你应该得到一些有用的结果。

于 2010-01-03T03:46:06.033 回答
2

请参阅此处的 WNetOpenEnum() 和 WNetEnumResource() 。

于 2010-01-03T03:48:53.377 回答
0

您可以只查看网络适配器上的 IP 和子网掩码并 ping 每个地址吗?可以查询哪个响应,以查看它是否具有您需要连接的任何内容。

于 2010-01-03T03:45:15.120 回答