获取与我的计算机在同一网络中的所有IP

时间:2009-06-08 14:09:16

标签: network-programming

有没有办法以编程方式(在c#中)获取与我的计算机位于同一域/子网中的所有其他工作站并显示有关它们的一些信息(如果它们处于活动状态,它们安装了哪种操作系统,它们的IP等)?

3 个答案:

答案 0 :(得分:5)

nmap这样做多加一吨。它的开源。

答案 1 :(得分:1)

这是一个VB解决方案,但我很确定你能够做出改变所需的改变!

可能有更好的方法,但这是第一次削减。

Imports System.Net.NetworkInformation
Imports System.Directory Services

Class NetworkInfo

Function GetComputers() as list(Of String)

dim List as new list(of String)

Dim DomainEntry as new DirectoryEntry("WinNT://" + DomainInfo.GetDomain.Trim())
DomainEntry.Children.SchemaFilter.Add("computer")

For Each Machine as DirectoryEntry in DomainEntry.Children
List.Add(Machine.Name)
Next

return List

End Function

End Class

在System.Net.NetworkInformation命名空间中有各种有用的工具可以让你捕获IP地址等内容。

答案 2 :(得分:1)

我能想到的最简单的方法(远非傻瓜证明)是将ICMP echo request(在RFC 792中定义)发送到224.0.0.1。 C#提供Ping类来执行此操作。请记住,虽然您冒着丢包的风险,但还有一个问题是网络上的所有机器是否都支持组播。