Подтвердить что ты не робот

Разрешить имя хоста ip-адресу

Я разработал приложение для моделирования клиент/сервер. Я развернул клиент и сервер на двух разных машинах Windows XP. Так или иначе, клиент не может отправлять запросы на сервер.

Я попробовал следующие варианты:

  • Пинг-сервер успешно работает с клиентом, используя ip-адрес.

  • Pinged клиентский компьютер успешно с сервера, используя ip-адрес.

  • Проверен инструмент командной строки netstat с обеих машин. Сервер находится в режиме LISTENING, а клиент находится в режиме SYS_SENT. Но чужой адрес, который он использует для отправки, - это имя хоста, а не ip-адрес.

  • Аппарат Pinged server безуспешно использует имя хоста от клиента.

  • Pinged клиентский компьютер успешно использует имя хоста с сервера.

Я чувствую, что проблема заключается в том, что клиент пытается подключиться к серверу с использованием имени хоста.

Не могли бы вы сообщить мне, как заставить приложение использовать IP-адрес вместо имени хоста? Есть ли другой способ сопоставить имя хоста IP-адресу?

4b9b3361

Ответ 1

Перейдите на свою клиентскую машину и введите:

nslookup server.company.com

заменив имя хоста на ваш сервер server.company.com, конечно.

Это должно указать вам, какой DNS-сервер использует ваш клиент (если есть), и что он думает, что проблема связана с именем.

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

Однако вы можете изменить способ, которым большинство машин разрешает имена узлов, например, /etc/resolv.conf и /etc/hosts в системах UNIXy, и локальные хосты файла в системах Windows-y.

Ответ 2

Вы можете использовать функцию c getaddrinfo() для получения числового адреса - как ipv4, так и ipv6. См. Пример кода здесь

Ответ 3

Попробуйте tracert для разрешения имени хоста. IE у вас есть адрес Ip ​​8.8.8.8, поэтому вы будете использовать; tracert 8.8.8.8

Ответ 4

Трудно ответить без дополнительной информации о сетевой архитектуре. Некоторые вещи для расследования:

  • Возможно ли, что клиент и/или сервер находятся за устройством NAT, брандмауэром или похожим?
  • В каком-либо из IP-адресов используется "локальный" адрес, например 192.168.x.y или 10.x.y.z?
  • Каковы имена хостов, являются ли они "настоящими" DNS: именами или чем-то более локальными и/или специфичными для Windows?
  • Как клиент ищет сервер? Должно быть место в кодовых или конфигурационных данных, содержащих имя хоста, вместо этого попробуйте вместо этого использовать IP-адрес, если вы хотите избежать поиска.

Ответ 5

Windows XP имеет брандмауэр Windows, который может помешать сетевому трафику, если он не настроен должным образом. Вы можете отключить брандмауэр Windows, если у вас есть права администратора, путем доступа к апплетам брандмауэра Windows через панель управления. Если ваше приложение работает с брандмауэром Windows отключено, проблема, вероятно, связана с настройками брандмауэра.

У нас есть приложение, которое работает на нескольких ПК, обменивающихся с использованием UDP/IP, и мы проводим эксперименты, чтобы приложение могло работать на ПК с пользователем, у которого нет прав администратора. Чтобы наше приложение связывалось между несколькими ПК, нам пришлось использовать учетную запись администратора, чтобы изменить настройки брандмауэра Windows.

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

Первое изменение состояло в том, чтобы использовать функциональность вкладки "Исключения" апплета Windows Firewall для создания исключения для порта, который мы используем для связи.

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

Мы обнаружили, что поиск имени хоста с использованием имени компьютера (назначенного с помощью вкладки "Имя компьютера" диалогового окна "Свойства системы" ) не будет работать, если серверный брандмауэр Windows Firewall не включил порт службы обмена файлами и принтером.

Итак, мы должны были сделать два изменения: (1) установить исключение для порта, который мы использовали для связи, и (2) включить службу файлов и принтеров на вкладке "Исключения", чтобы разрешить поиск имени узла.

** РЕДАКТИРОВАТЬ **

Вы также можете найти эту статью в статье базы знаний Майкрософт об использовании в сети Windows XP.

И посмотрите эту статью статью о разрешении имен NETBIOS в Windows.