Итак, я написал простой 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. Если у кого-то есть вопросы, пожалуйста, дайте мне знать.