Как сделать сервер доступным для локальных клиентов

Я работаю над многопользовательской игрой на python, которая использует библиотеку сокетов для своей сети. Игра будет поддерживать воспроизведение по локальной сети. Один игрок настроит сервер, а другие игроки в локальной сети смогут присоединиться к игре.

Чтобы реализовать это, мне нужен простой способ для игроков найти список доступных серверов (от игроков не следует ожидать ввода IP-адресов!). В моем предпочтительном решении будет использоваться только библиотека сокетов python (и, возможно, другие части стандартной библиотеки).

Я ищу клиентский и серверный код:

  • client: транслирует свой запрос на игры для всех компьютеров, прослушивающих определенный порт в локальной сети

  • сервер (ы): отвечает клиенту с его доступностью

ПОСЛЕДУЮЩИЙ ОТВЕТ Следуя совету Ганса в его ответе ниже, сокет UDP может использоваться для ответа на запросы широковещательной передачи от клиента.

Сервер:

#UDP server responds to broadcast packets #you can have more than one instance of these running import socket address = ('', 54545) server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1) server_socket.bind(address) while True: print "Listening" recv_data, addr = server_socket.recvfrom(2048) print addr,':',recv_data server_socket.sendto("*"+recv_data, addr) 

Клиент:

 #UDP client broadcasts to server(s) import socket address = ('<broadcast>', 54545) client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) data = "Request" client_socket.sendto(data, address) while True: recv_data, addr = client_socket.recvfrom(2048) print addr,recv_data 

Существуют ли другие убедительные способы решения этой проблемы обнаружения?

  • Как скрыть ActionButton в Киви?
  • Как вы прокручиваете GridLayout внутри Kivy ScrollView?
  • Python не может импортировать имя <class>
  • Как я могу сделать много кнопок на динамическом языке?
  • Файл python / kivy .kv не читается
  • Шаблон Kivy с динамической сеткой
  • One Solution collect form web for “Как сделать сервер доступным для локальных клиентов”

    Вы можете попробовать трансляцию UDP. Вы можете, например, отправить трансляцию от клиента. Затем сервер должен передать ответ своим адресом, чтобы клиент мог использовать обычное соединение.

    См. Здесь пример кода: http://wiki.python.org/moin/UdpCommunication

    Python - лучший язык программирования в мире.