@xverizex

Как игровому серверу в локальной сети дать знать клиенту о том, что создана игра?

я вот подумал, например, что можно выделить для сервера групповой адрес в локальной сети и, если клиент отправит запрос на групповой адрес, то сервер ответит. но я не уверен, что это правильный способ. вдруг групповой адрес будет занят другой программой или игрой. неужели надо всем компьютерам в сети отправить запрос. а если сеть состоит из 255 хостов? как же правильно делать надо?
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Karpion
Это смотря как построена лок.сеть. Если это броадкастовый домен - то можно послать броадкастовый пакет, а клиенты будут слушать некий порт, на который направлен оповещательный пакет. Но если сеть поделена на сегменты роутерами или на вирт.сети VLAN-свичами - то это вряд ли получится. А уж если кто-то сидит за роутером, который делает NAT - то всё совсем плохо.

Мультикаст на групповой адрес - это хорошо. Но роутеры д.б. настроены на трансляцию таких пакетов.

Напишите подробнее, как Вы представляете себе процесс присоединения к игре и конфигурацию лок.сети.
Ответ написан
jamakasi666
@jamakasi666
Просто IT'шник.
Клиент слушает некий фиксированный порт бродкаста. Предположим 60001. Причем все клиенты.
В Этой локальной сети появляется сервер, периодически сервер шлет бродкаст на порт 60001. Скажем каждые 10 секунд.
Все будет ок, сколько бы не было клиентов но серверов всегда будет меньше и сеть не засрете.
Бродкастом можете сообщить что то типа "ip-сервера:порт-сервера:версия-игры", дальше клиент ловит этот пакет, смотрит что версия подходящая, и к примеру уже по tcp начинает получать полную информацию сервера(карта\режим\иконка\что угодно) и отображает это в списке серверов игрока.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Клиент уже должен быть подключен к серверу. По запросу от клиента - сервер выдаёт список созданных игр.

Если это одноранговая сеть и все клиенты не знают адрес сервера - можно сделать проще: выдать всем компам адрес игрового сервера через локальную DNS-запись с DHCP-сервера!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы