我正在编写一个程序,您可以出于各种原因将其连接到LAN中的其他计算机。但是,我不想输入多台计算机的IP地址(这是一个痛苦的屁股),我想知道是否有办法列出局域网中所有计算机的IP地址。我整天都在研究,到目前为止还没有找到合适的东西。这是因为这种类型不存在吗? 提前谢谢。
编辑:看来这篇文章有很多观点,我应该发布我的实际解决方案。通常,LAN上计算机IP地址的命名约定是相同的。例如192.168.2。*,*被替换为任何有效数字。我的程序检测到IP地址,将其显示给用户,然后询问前3个IP块。然后通过ping并等待响应,在给定的IP命名约定中依次扫描最多200个。没有回应,没有电脑。一旦知道它背后有计算机,它就可以完成IP所能做的一切。
答案 0 :(得分:7)
1)读取子网掩码并计算您所在的子网掩码中的所有IP地址。然后,您可以使用ICMP ping(标准ping)或ARP ping来列出所有有效的IP地址。 ARP Ping在子网设置中非常可靠。
2)您可以nmap列出所有主机
nmap -nsP 192.168.10.1/254 | grep ^Host
答案 1 :(得分:6)
您真的不会找到比同一子集上的ping
或arping
地址更可靠的内容。我在第一次实习的那天实现了这个软件,并且上次我检查了(事实上它是几年前),这就是他们仍在使用这个功能。我认为这意味着他们没有找到更好的东西。
找到这些源代码并将其转换为C#并不难。 ping
,arping
。或者,您只需执行命令提示符并执行ping
,然后解析结果。
答案 2 :(得分:2)
任何主机发现工具都可以为您提供帮助。特别是Nmap肯定会给你这个信息,尽管在这种情况下它可能有点过分。谷歌进行“ping扫描”,你应该得到一些有用的结果。
答案 3 :(得分:2)
参见WNetOpenEnum()和WNetEnumResource(),here。
答案 4 :(得分:0)
您可以查看网络适配器上的IP和子网掩码并ping每个地址吗?无论哪个响应都可以查询,看它是否有你需要连接的东西。