我正在编写一个C#Winforms程序,以根据给定的IP地址范围获取连接到LAN的所有计算机。
我正在使用Ping
类来识别计算机。
但问题是我得到了连接到LAN的所有设备(打印机,IP电话等)的响应。
请帮我过滤这些设备并从LAN获取计算机。
答案 0 :(得分:3)
使用PING无法判断网络节点是计算机/打印机/ IP电话等。
您需要使用更高级别的协议(如NETBIOS或DNS)来解决此问题,但这在很大程度上取决于设备的实现方式。
答案 1 :(得分:0)
嗯,有可能打印机,手机等都有通用计算机,运行TCP / IP堆栈和一些专门的服务器软件,所以它归结为你对“计算机”的定义。但是,这听起来比它的价值更麻烦,除非你能识别出你认为的只是计算机所具有的东西,而且所有这些东西都会有。在Windows网络上,SMB可能 - 但是可以捕获通过SMB公开存储的NAS。
我认为没有一般方法可以做你想做的事。就像Lloyd指出的那样,nmap会做一些指纹识别,但这远非完美(它通常会非常接近特定的操作系统版本,但它无法分辨哪种物理设备正在运行该操作系统)。