Поэтому я сделал простую игру, в которой два игрока могут соединиться, чтобы играть вместе - один из них выбирает серверный вариант (а затем игра начинает прослушивать входящие TCP-синхронизации), а другой вводит IP-адрес игрока-сервера, чтобы установить соединение, и Обмен данными геймплея через сокет TCP.

Обычные вещи.

Но игроки могут подключиться, только если их компьютеры находятся в одной локальной сети, и клиент вводит частный IP-адрес сервера.

Поэтому я предполагаю, что если игроки находятся в разных локальных сетях, сервер должен иметь порт для пересылки игрового порта (55555), и тогда любой клиент может подключиться, введя общедоступный IP-адрес.

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

Или два приложения не могут подключиться по глобальной сети, если одна из сторон не настроит переадресацию портов?

1 ответ1

0

Вам нужно будет выполнить переадресацию портов для сервера, на котором размещен «сеанс».

Единственный способ обойти это на самом деле - иметь выделенный Сервер, который всегда прослушивает пользователей, чтобы пользователи, которые пытаются играть в игру, не размещали свой собственный сеанс, а вместо этого использовали Сервер, выделенный для игры ...

Однако, обычно довольно просто перенести порт вперед, большинство руководств маршрутизатора содержат инструкции по выполнению этого. Проблема, с которой вы столкнетесь, заключается в том, что публичные IP-адреса для домашних пользователей редко бывают статичными и будут меняться, приводя к неправильному использованию «известного» публичного IP-адреса.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .