1

В настоящее время я работаю над проектом, который получает информацию с принтера по snmp protocol (имя, напечатанные страницы, уровни тонера ...).

В настоящее время он работает, когда у меня есть IP-адрес принтера, но я должен применить его в очень большой компании (имеется в виду огромная сеть), и мне нужно что-то, что я могу найти все принтеры в сети.

Это должно выполняться в системе на основе Windows в пакетном сценарии.

Я знаю, что могу найти все IP- адреса в сети с помощью arp -a или что можно выполнить поиск по всем IP-адресам, чтобы найти принтер.

Но у меня есть маска подсети 255.0.0.0 что означает, что есть 16 миллионов (16581375) IP-адресов, которые я должен искать, что очень ресурсоемко и требует много времени.

В панели управления Windows есть опция add network or wireless printer где общий список всех сетевых принтеров.

Я не могу найти никакой информации, как они получают этот список или любой тип исходного кода.

Кто-нибудь знает, как Windows получает этот список?

Или есть лучший способ получить список всех сетевых принтеров, а не использовать всю сеть для принтеров?

И когда брутфорсинг - единственное решение, мне нужен лучший способ проверить, принадлежит ли IP-адрес принтеру, потому что отправка команды snmp на любой IP-адрес - не лучший способ.

1 ответ1

0

Что касается Windows Vista, я считаю, что вы должны использовать веб-сервисы Dynamic Discovery (WS-Discovery). Вам, вероятно, нужно написать программу для этого.

Из Википедии WS-Discovery:

Динамическое обнаружение веб-служб (WS-Discovery) - это техническая спецификация, определяющая протокол многоадресного обнаружения для обнаружения служб в локальной сети. Он работает через TCP и UDP-порт 3702 и использует многоадресный IP-адрес 239.255.255.250. Как следует из названия, фактическая связь между узлами осуществляется с использованием стандартов веб-сервисов, в частности SOAP-over-UDP.

Microsoft поставляет библиотеку обнаружения: библиотеку классов .NET, которая реализует протокол WS-Discovery (ссылка).

Вы также можете найти пример программы на C++ в примере обнаружения Web-сервисов (WS-Discovery), который описывается как:

В этом примере показано, как использовать API обнаружения веб-служб для выполнения процедур WS-Discovery с использованием интерфейсов IWSDiscoveryProvider, IWSDiscoveryProviderNotify, IWSDiscoveryPublisher и IWSDiscoveryPublisherNotify.

Некоторые ссылки, которые я нашел:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .