Я написал простую C# (WPF) игру, которая работает на локальном компьютере, и сейчас я пытаюсь сделать ее играбельной для Inte rnet. Я предполагал, что достигну своей цели, используя дырочку UDP, поэтому я протестировал несколько решений из потоков docs.microsoft.com и Stack, но ничто не позволило мне установить sh соединение между хостами так, как я хотел.
Что конкретно я хочу сделать? Я хочу соединить двух пользователей, используя разные сети, находясь за разными маршрутизаторами и разными NAT, не зная их IP-адресов. Мой план состоял в том, чтобы сделать что-то вроде системы входа в систему с сервером, адрес которого stati c и известен приложениям игроков. Программа, запущенная на сервере, хранит временные динамические данные c IP каждого игрока с уникальным ником. Когда Player запустит свое приложение, он войдет в систему под своим ником (или, возможно, также паролем, но на данный момент это не так важно) и сервером, который будет авторизовывать его доступ, проверяя, присутствует ли он в списке пользователей, обновит свой publi c IP в базе, если он изменился. Затем другой игрок будет go через тот же процесс, и в конце один из игроков в конце концов попытается соединиться с другим, передав серверу его никнейм, вернув IP-адрес другого игрока и подключившись напрямую, или установив соединение через сервер. , Может быть, моя идея неверна, и я должен попробовать другой подход, но я не знаю, что я должен делать, чтобы достичь описанных результатов.
Что важно - не будет доступа ни к одному игроку Конфигурация маршрутизатора, поэтому переадресация портов не вариант. У меня есть доступ только к маршрутизатору, за которым расположен сервер, поэтому я могу открыть любые порты здесь.
Теоретически у меня должен работать дырокол UDP, но, вероятно, я что-то не так и не могу победить переадресация портов. Я открыл один порт на своем маршрутизаторе, чтобы сделать сервер доступным извне, но я все еще не знаю, как подключить проигрыватели. Любая помощь будет оценена