Я создал простую утилиту для Warcraft III, которая позволяет пользователям присоединяться к играм, размещенным на удаленном компьютере, так же, как если бы они были доступны в их локальной сети. Его идея довольно проста:
- Игроки А и Б хотят играть. Они настраивают переадресацию портов на своих маршрутизаторах, запускают мою утилиту и обмениваются своими внешними IP-адресами.
- Игроки затем вводят IP-адреса друг друга в мою утилиту, и один из игроков создает игру Warcraft III.
- Моя утилита использует формат пакета Warcraft III для запроса локального компьютера о любых играх с Warcraft III. Если он получает ответ (с информацией об игре), он просто перенаправляет его на каждый IP в списке.
- Благодаря переадресации портов пакет (точнее, датаграмма) достигает другого экземпляра Warcraft III, и теперь другой пользователь может видеть игру своего друга, а также присоединиться к ней.
Это работает очень хорошо. Тем не менее, он по-прежнему требует, чтобы пользователи настраивали переадресацию портов, и вот мой вопрос - как лучше всего избежать этого?
Я думал о UPnP / NAT-PMP, но это особенно полезно, когда слушает мое приложение. В этом случае я только уведомляю Warcraft III на другом конце, что на моей машине есть игра. Но можно ли создать сопоставление портов для другого приложения?
Я, конечно, что-то упускаю, поэтому я был бы рад, если бы кто-то мог указать мне правильное направление.