Сервер трансляции сокетов в Python

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

  • это приложение, а не веб-приложение.

2 ответа

В SO уже есть вопрос с автоответчиком, который уже говорит об этом: как сделать сервер доступным для клиентов LAN

Вы можете использовать ту же технику для запроса серверов в локальной сети.

Подход (YMMV) в видеоиграх:

  • Серверы запускаются и привязываются к трансляции.
  • Клиенты запускаются и привязываются к трансляции.
  • Клиенты отправляют широковещательное сообщение с запросом на серверы.
  • Серверы получают широковещательные сообщения от клиентов и сообщают о них другим широковещанием (возможно, они отправляют это сообщение через секунду или две, если чувствуют себя параноиком)
  • Клиенты ждут несколько секунд и записывают информацию обо всех отвечающих серверах.
  • Клиенты представляют список серверов и просят игроков выбрать один из них.
    • Возможно, они захотят продолжать выполнять предыдущий шаг параллельно, во время посещения игроком страницы со списком серверов.
  • Клиенты отвязываются от трансляции и пытаются подключиться к выбранному игроку серверу.
    • Обычно порт также можно выбрать, но порт по умолчанию для этого подключения доступен по умолчанию в игре. Таким образом, вам даже не нужно передавать идентификатор сервера в сообщении, если порт не изменился...
  • Все перестают насыщать сеть широковещательными сообщениями!!!:П

Чтобы обнаружить сервер через Интернет, вам нужна какая-то служба уведомлений. У вас есть множество вариантов в сети, которые работают как универсальные службы обнаружения, популярные со времен сетевых игр для Android.

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

Другие вопросы по тегам