Как клиент находит номер порта сервера? - PullRequest
0 голосов
/ 01 апреля 2010

В настоящее время я изучаю основы сетей в Java.Я играл с отношениями сервера и клиента между двумя моими компьютерами.Однако я не могу понять, как распределенные программы (скажем, видеоигры) могут не только найти компьютер «хоста», но и номер порта, на котором работает сервер, чтобы создать сокет между двумя компьютерами.Единственный способ создания сокета, с которым я действительно сталкиваюсь, - это использовать уже известный IP-адрес и номер порта.

Как выполнить поиск в сети LAN другого компьютера (хоста) для поиска клиентов?

Как вы определяете, на каком порту находится сервер, не «пингуя» все доступные порты для ответа (что, как я понимаю, является плохим тоном ... Что-то про «атаку сервера» ...)?*

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

Большое спасибо,

Jonathan

1 Ответ

6 голосов
/ 01 апреля 2010

Обычно службы / схемы имеют заданный номер порта или диапазон номеров портов, которые они используют (HTTP использует 80, SSH использует 22 и т. Д.). Кроме того, они могут подключаться к «главному» серверу, чтобы объявить о своем присутствии и узнать о других узлах (например, Battle.net).

Ничего из этого не требуется строго, если используется Zeroconf (через Bonjour, Avahi и т. Д.). Zeroconf позволяет машинам выполнять многоадресный DNS в локальной сети вместо механизма точечной передачи, традиционно используемого для DNS. Это позволяет им обнаруживать машины в сети, которые также поддерживают mDNS, и обнаруживать службы, работающие на них.

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