查找网络中的所有打印机或至少打印机 IP

查找网络中的所有打印机或至少打印机 IP

我目前正在进行一个通过打印机获取信息的项目snmp protocol(名称、打印页数、碳粉量……)。

当我有一个打印机 IP 地址时,它目前正在工作,但我必须在一个非常大的公司(意味着一个庞大的网络)中应用它,并且我需要一些可以找到网络中的所有打印机的东西。

这应该在基于 Windows 的系统上的批处理脚本中运行。

我知道我可以找到网络的所有 IP,arp -a或者可以搜索所有 IP 来查找打印机。

但是我有一个子网掩码,255.0.0.0这意味着有 1600 万(16581375)个 IP 需要我必须搜索,这非常耗费资源并且耗费时间。

在 Windows 控制面板中有一个选项add network or wireless printer,其中共享所有网络打印机的列表。

我找不到任何关于他们如何获取此列表或任何类型的源代码的信息。

在此处输入图片描述

有谁知道 Windows 如何获取此列表?

或者有没有更好的方法来获取所有网络打印机的列表,而不是强制整个网络的打印机?

当暴力破解是唯一的解决方案时,我需要一种更好的方法来检查 IP 是否属于打印机,因为snmp向任何 IP 发送命令并不是最好的方法。

答案1

从 Windows Vista 开始,我相信您应该使用 Web 服务动态发现 (WS-Discovery)。您可能需要为其编写一个程序。

来自维基百科服务发现

Web 服务动态发现 (WS-Discovery) 是一种技术规范,它定义了一种多播发现协议,用于在本地网络上定位服务。它通过 TCP 和 UDP 端口 3702 运行,并使用 IP 多播地址 239.255.255.250。顾名思义,节点之间的实际通信是使用 Web 服务标准(尤其是 SOAP-over-UDP)完成的。

Microsoft 提供了发现库:一个实现 WS-Discovery 协议的 .NET 类库(关联)。

您还可以在以下位置找到示例 C++ 程序 Web 服务发现 (WS-Discovery) 示例, 被形容为:

此示例说明如何通过使用 IWSDiscoveryProvider、IWSDiscoveryProviderNotify、IWSDiscoveryPublisher 和 IWSDiscoveryPublisherNotify 接口,使用 Web 服务发现 API 执行 WS-Discovery 例程。

我找到的一些参考资料:

相关内容