列出连接到单个LAN的所有计算机的IP地址

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

编辑:看起来这篇文章有很多观点,我应该发布我的实际解决方案。 通常,LAN上计算机IP地址的命名约定是相同的。 例如192.168.2。*,*被替换为任何有效数字。 我的程序检测到IP地址,将其显示给用户,然后询问前3个IP块。 然后通过ping并等待响应,在给定的IP命名约定中依次扫描最多200个。 没有回应,没有电脑。 一旦知道它背后有计算机,它就能完成你可以用IP做的一切。

你不会真正找到比在相同子集上pingarping地址更可靠的东西。 我在第一次实习的那天实现了这个软件,并且上次我检查了(事实上它是几年前),这就是他们仍在使用这个function。 我认为这意味着他们没有找到更好的东西。

找到这些源代码并将它们转换为C#并不难。 arping pingarping ping 。 或者,您只需执行命令提示符并执行ping ,然后解析结果。

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

2)您可以nmap列出所有主机

 nmap -nsP 192.168.10.1/254 | grep ^Host 

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

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

你能看一下网络适配器上的IP和子网掩码并ping每个地址吗? 无论哪个响应都可以查询,看它是否有你需要连接的东西。