У меня многоуровневая Windows 10, и я хочу, чтобы мое приложение открывало серверный сокет на определенном IP-адресе, заданном его имя хоста.
Имя хоста моей машины MY-PC
и у него публичный IP 192.0.0.2/24
и "прямой" IP 192.2.2.2/24
(напрямую подключен к другому компьютеру). Оба они настраиваются на странице сетевого адаптера Windows в панели управления.
DNS не настроен. Файл моих хостов выглядит так:
127.0.0.1 localhost
192.2.2.2 MY-PC
192.2.2.1 DIRECT-PC
Когда я пытаюсь пропинговать свое имя хоста (после полного отключения IPv6):
> ping MY-PC
Pinging MY-PC [192.0.0.2] with 32 bytes of data:
Reply from 192.0.0.2: time<1ms
...
Странно то, что та же самая настройка (файл hosts / конфигурация сетевого адаптера) работает должным образом на другом компьютере (но только на одном из шести).
Как я могу принудительно прослушивать определенный IP-адрес с имени хоста? (который является глобальным параметром из конфигурации, полученной программой).
Я уже проверил связанный вопрос но ответ касается полного отключения IPv6.
Пожалуйста прочти Эта статья, там вы можете узнать больше о разрешении имен в Windows. Ниже ответьте на ваш вопрос:
При разрешении имени хоста обычно используется следующая последовательность:
- Клиент проверяет, является ли запрошенное имя его собственным.
- Затем клиент выполняет поиск в локальном файле Hosts, в списке IP-адресов и имен, хранящихся на локальном компьютере.
- Запрашиваются серверы системы доменных имен (DNS).
- Если имя все еще не разрешено, в качестве резервной копии используется последовательность разрешения имен NetBIOS. Этот порядок можно изменить, настроив тип узла NetBIOS клиента.
Клиент Windows будет пробовать каждый из этих методов, пока не будет успешно разрешено имя или не исчерпаны эти методы.