2013-12-09 5 views
0
  1. Я создаю C# сокет, используя 127.0.0.1 и порт #. Теперь я создаю локальный клиент (который работает локально на том же компьютере, что и сервер), и попробуйте подключиться с помощью fqdn машины. Это не работает. Если я использую 127.0.0.1 вместо fqdn для клиента, он работает. И наоборот, если я создаю сервер, используя fqdn и порт # на локальном компьютере, и если клиент использует 127.0.0.1, это не сработает. Если я использую fqdn в клиенте, тогда все работает. Это заставляет меня думать, в чем разница между собственным IP-адресом/fqdn и 127.0.0.1 машины, поскольку я был под впечатлением, оба они будут ссылаться на одну и ту же машину.Является 127.0.0.1 отличным от IP-адреса?

  2. В случае C# UdpClient мы просто указываем порт #. Как C# справляется с этой проблемой?

  3. В случае, если машина имеет несколько сетевых адаптеров, и если мы просто указываем порт # (например, в случае UdpClient), какой сетевой адаптер используется для создания порта?

+0

Попробуйте привязать сервер к 0.0.0.0. Тогда и FQDN, и 127.0.0.1 должны работать. – uselpa

ответ

0
  1. Ваш клиент разрешает полное доменное имя, которое, вероятно, указывает на другой интерфейс, и не тестируются. Они ссылаются на одну и ту же машину, однако это разные интерфейсы.
  2. According to MSDN, UdpClient будет прослушивать «интерфейс по умолчанию»
  3. Снова, независимо от того, что Microsoft определяет как «интерфейс по умолчанию». На самом деле это означает, что если вы прослушиваете один IP-адрес, вы получите только трафик для этого IP-адреса.
+0

Спасибо за ответ! – user2574953

1

Адрес IP 127.0.0.1 - это адрес виртуального сетевого адаптера локальной петли, который существует на каждом компьютере. Этот виртуальный адаптер полностью встроен в операционную систему и не может быть подключен извне. Программы, запущенные на одном компьютере, могут взаимодействовать друг с другом, но ничего больше.

Когда вы используете полное доменное имя для подключения к компьютеру, имя разрешено к IP-адресу, принадлежащему этому имени, обычно адресу, прилагаемому к внешнему сетевому адаптеру. Допустим, ваш сетевой адрес компьютера - 192.168.0.2. Когда вы пытаетесь подключиться к любому порту по этому адресу, он будет никогда подключиться к программе, прослушивая по телефону 127.0.0.1, больше, чем он будет подключаться к другому компьютеру, прослушивающему по адресу 192.168.0.3.

Адреса важны.

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

+0

Спасибо за ответ! Значит, 0.0.0.0 не включает 127.0.0.1? Я написал небольшую программу для проверки этого. – user2574953

+0

Нет, прослушивание '0.0.0.0' должно принимать соединения по всем адресам, включая' 127.0.0.1'. Как вы протестировали это, чтобы заставить его потерпеть неудачу? – Corey

+0

yup. Я написал программу неправильно. – user2574953

Смежные вопросы