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


1

我目前正在开发一个项目,通过打印机从打印机获取信息 snmp protocol (名称,打印页数,碳粉水平......)。

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

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

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

但我有一个子网掩码 255.0.0.0 这意味着有1600万(16581375)IP我必须搜索,这是非常资源密集和耗时。

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

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

enter image description here

有谁知道windows如何获得此列表?

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

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

Answers:


0

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

来自维基百科 WS发现

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

Microsoft提供发现库:实现WS-Discovery协议的.NET类库( 链接 )。

您还可以在其中找到示例C ++程序 Web服务发现(WS-Discovery)示例 , 被描述成:

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

我发现的一些参考文献:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.