场景: 开发以Win CE 5.0为动力的设备的应用程序。该应用程序正在使用.NET Compact Framework 3.5(C#)开发。C#找到局域网中所有活动IP地址的最佳方法
问: 当您将计算机连接到局域网,你可以看到所有其他活动计算机及其各自的IP地址,我们想实现我们的应用程序类似的东西,就像其中只有IP地址将被列出。
考虑到它是一个现有的Windows功能,我猜想它可以在应用程序中轻松实现。考虑到我的情况,最好的方法是什么?
场景: 开发以Win CE 5.0为动力的设备的应用程序。该应用程序正在使用.NET Compact Framework 3.5(C#)开发。C#找到局域网中所有活动IP地址的最佳方法
问: 当您将计算机连接到局域网,你可以看到所有其他活动计算机及其各自的IP地址,我们想实现我们的应用程序类似的东西,就像其中只有IP地址将被列出。
考虑到它是一个现有的Windows功能,我猜想它可以在应用程序中轻松实现。考虑到我的情况,最好的方法是什么?
您可以编写一个函数,平安在大约20个或更多IPAdresses从192.168.1.1去192.168.1.20,并把它在不同的线程不同模式ofssets exmple: 一个从192.168.1.1 另外一个从192.168打算去.1.21 ....... 称他们在不同模式的线程,但不要给他们打电话了很多它会减慢CPU,也许FREEZ计算机
首先,你将不得不定义您是什么意思活动 IP地址。
主机可以块ICMP_ECHO(通常下文称为ping
),但允许在特定端口上的TCP,UDP等连接。
根据您需要您的主机的什么类型的服务,你可以
发在你的子网ICMP_ECHO
要求所有的IP地址。
-要计算的IP范围的subnet
你可能想使用address space bitmask
-对于ICMP请求,你也可以使用一个broadcast地址。但大多数主机做不响应广播请求,以预先淹没。
试图(对整个IP范围重新)打开特定TCP端口上连接
问你的路由器通过dns query
为您提供使用它的主机列表发送arp requests到以太网撒施地址
本质上有太多的方法可以得到主机列表中的特定IP范围或子网给予笼统的回答。
首先您需要定义您需要的主机列表。
如果存在,我会用ActiveDirectory和IP扫描来做任何事情。 –
只是所以你知道,大多数的净视图类型的功能是基于NetBIOS,这是可怕的片状。在没有路由的情况下进行任何子网划分都可以很好地防止您在网络上看到任何IP地址。 – zaitsman