2010-01-03 88 views
9

我正在编写一个程序,您可以将各种原因连接到局域网中的其他计算机。但是,我不知道是否有办法列出局域网中所有计算机的IP地址,而不必输入多台计算机的IP地址(对接困难)。我整天都在研究,至今还没有找到合适的东西。这是因为没有这种存在? 预先感谢您。列出连接到单个局域网的所有计算机的IP地址

编辑:看来,这篇文章越来越多,我应该发布我的实际解决方案。一般来说,LAN上计算机IP地址的命名约定是相同的。例如是192.168.2。*,*被替换为任何有效的数字。我的程序检测到IP地址,将其显示给用户,然后询问前3个IP块。然后,它通过Ping并等待响应,在给定的IP命名约定中顺序扫描多达200个。没有回应,没有电脑。只要知道IP后面有一台计算机,它就可以做一切你可以用IP做的事情。

+0

您可以获取子网,并遍历可用地址以ping通它们。但这对那些刚关闭的人来说无济于事。如果你有访问权限,你可以看看DHCP租约文件 – 2010-01-03 03:45:12

+1

ARPing,正如Jason所描述的那样,是唯一的跨平台和防火墙防御解决方案。如果您仅限于Windows boxen,BlueRaja的WNetEnumResource()方法是合理的。扫描/ nmap方法具有太多基于主机的防火墙。没有神奇的子弹/ API调用。 iphelper API的SendARP()可能是您最好的选择:http://msdn.microsoft.com/en-us/library/aa366358%28VS.85%29.aspx – 2010-01-03 03:59:11

+0

为什么不是254? (在较大的子网中为255) – Deanna 2012-07-24 13:40:03

回答

6

你不会在同一个子集上找到比ping ing或arping ing地址更可靠的东西。在我第一次实习时,我实现了这一功能,并且最后一次检查(公平地说是几年前),这是他们仍在使用该功能的一部分。我认为这意味着他们没有找到更好的东西。

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

+0

其实'System.Net.NetworkInformation.Ping'应该可以做到。不需要翻译任何东西。 – GeReV 2010-07-15 10:27:58

7

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

2)您可以NMAP列出所有的主机

nmap -nsP 192.168.10.1/254 | grep ^Host 
0

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

2

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

+3

(+1)通过进程调用使用nmap并解析结果。 – 2010-01-03 03:50:59

2

请参阅WNetOpenEnum()和WNetEnumResource(),here

相关问题