Как я могу получить IP-адрес сетевого принтера, учитывая имя порта с помощью API Win32?

В Visual Studio 2003 Visual Studio 2005 и возможно более ранние версии (это работает в 2008 также) можно включать текстовый файл в проект, затем в панель 'Properties', установить действие на 'Встроенный Ресурс'. Затем можно получить доступ к файлу как к потоку с помощью Assembly.GetManifestResourceStream(string).

Другие ответы здесь более удобны. Я включаю это для полноты.

Примечание, что этот подход будет работать на встраивание других типов файлов, таких как изображения, значки, звуки, и т.д.

6
задан Sinan Ünür 19 October 2009 в 10:41
поделиться

3 ответа

Я не думаю, что существует стандартный способ получить IP-адрес. Вероятно, существуют разные несовместимые реализации мониторов сетевых портов. Для моего сетевого принтера IP-адрес является частью имени порта (например, IP_192_168.1.104 ). Если он такой формы, то вы могли бы разобрать его, но я не думаю, что это универсальный вариант.

Используя EnumPorts , вы можете определить, является ли это сетевой принтер, но я все еще не делаю этого. Не вижу способа получить IP-адрес.

2
ответ дан 16 December 2019 в 21:42
поделиться

Как и любое другое сетевое IP-устройство, принтер будет иметь IP-адрес (обозначающий его карту Ethernet) и будет запускать службу на определенном порту (идентифицируя программу, отвечающую на сообщения принтера). Это всего лишь сетевой материал и пока не имеет ничего общего с конкретным принтером.

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

Предполагая, что вы имеете в виду, что у вас есть имя принтера, вам нужно запросить службу имен для вашего домена. Эта служба сопоставляет сетевые адреса «символическим» именам.

Используя api winsock2, я считаю, что это gethostbyname , которое вам нужно. Это позволит получить информацию о хосте вашего принтера по его имени.

2
ответ дан 16 December 2019 в 21:42
поделиться

Просто используйте Advanced Printer API, динамический вызов

0
ответ дан 16 December 2019 в 21:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: