Как узнать все IP-адреса и имена хостов локальной коробки Windows без единого сетевого запроса? - PullRequest
0 голосов
/ 01 февраля 2011

Этот вопрос относится к . Учитывая значение Uri, как можно проверить, относится ли оно к локальной машине? , которая не видела удовлетворительного разрешения.

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

Если подумать, я могу сделать следующий метод:

bool IsLocalAddress(string address);

Который принимает IP, имя хоста или имя хоста + имя домена и возвращает true, если адрес относится к локальной машине. Опять же, учтите несколько сетевых карт и доменов.

Заранее большое спасибо.

приписка

Я предпочитаю примеры кода C #.

Ответы [ 2 ]

1 голос
/ 01 февраля 2011

Вот пример, который выглядит интересно здесь .

0 голосов
/ 01 февраля 2011

Используя Python, вы можете сделать это:

import socket
socket.gethostname() # hostname
socket.gethostbyname(gethostname())  # host ip addr

Немного поиска в Google показывает, что Windows API содержит две функции с одинаковыми именами, поэтому любой язык может использовать похожий код.

Если вы пишете код, специфичный для Windows, вам следует использовать класс WMI, например Win32_NetworkAdapterConfiguration предоставляет информацию о нескольких интерфейсах и нескольких IP-адресах на интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...