UDP Holepunching Проблема - PullRequest
       40

UDP Holepunching Проблема

0 голосов
/ 08 ноября 2018

Итак, я написал простой Python-сервер, который будет использоваться для настройки P2P-соединений (для игры, которую я создаю).

Код сервера прост (python):

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_address = ''
server_port = 5000
server = (server_address, server_port)
sock.bind(server)
print("Listening on " + server_address + ":" + str(server_port))
while True:
    payload, client_address = sock.recvfrom(1)  
    resp = client_address[0] + ":" + str(client_address[1])
    print("Echoing data back to " + str(client_address))
    sent = sock.sendto(str.encode(resp), client_address)

Он прослушивает входящие UDP-сообщения и отвечает открытым клиентом ip: порт информация (например, ' xxx.yyy.zzz.aaa: порт ').

Клиент получает эту информацию с сервера и обновляет свою ip: порт информацию о Firebase. Все игроки в игровом лобби с огненной базой могут видеть своих противников ip: port info.

Однако следующая часть - P2P - не работает. Как только клиенты получают информацию о своих оппонентах ip: port и начинают отправлять UDP-пакеты, ни один из них не приходит.

Кто-нибудь знает, в чем может быть проблема?

***** РЕДАКТИРОВАТЬ ***** Я решил проблему .. и никто не мог ответить, основываясь на вышеупомянутой информации, которую я дал. Я тупо не обновлял порт для получения новых пакетов udp после получения первого ответа от сервера. Чувствую себя довольно глупо. В любом случае, похоже, что UDP-дырокол работает. Мой сервер - это приведенный выше код на python, а клиент - это игра в единство (c #) с бэкэндом Firebase. Если у кого-то есть вопросы, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 08 ноября 2018

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

Это библиотека без установки, поэтому установка pip https://github.com/jfdelgad/port-forward

Это библиотека, которую вы можете установить pip https://github.com/flyte/upnpclient

Оба имеют отличные примеры их использования в README.md

...