Разрешить имя хоста по IP-адресу - PullRequest
34 голосов
/ 06 июля 2010

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

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

  1. Успешно пропинговал сервер с клиента, использующего IP-адрес.

  2. Клиент успешно пропинговал клиентский компьютер с IP-адреса.

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

  4. Не удалось выполнить проверку связи с сервером, использующим имя хоста из клиента.

  5. Клиент успешно пропинговал клиент, используя имя хоста с сервера.

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

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

Ответы [ 5 ]

52 голосов
/ 06 июля 2010

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

nslookup server.company.com

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

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

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

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

4 голосов
/ 18 марта 2016

Попробуйте tracert для разрешения имени хоста. То есть у вас есть IP-адрес 8.8.8.8, чтобы вы могли использовать tracert 8.8.8.8

0 голосов
/ 03 декабря 2013

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

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

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

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

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

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

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

** EDIT **

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

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

0 голосов
/ 04 октября 2011

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

0 голосов
/ 06 июля 2010

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

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