То, что делает ваша сеть, называется " преобразование сетевых адресов " или NAT. Когда машина в локальной сети (клиент) хочет связаться с машиной за пределами сети (сервер, такой как интернет-хост с публичным IP-адресом), маршрутизатор отслеживает, куда следует отправлять пакеты, и доставляет их обратно соответствующего клиента, даже если пакеты, предназначенные для разных клиентов в локальной сети, будут приходить на один и тот же IP-адрес.
Это прекрасно работает, если клиент устанавливает соединение с сервером. Сервер не может инициировать соединение обратно к клиенту и не может произвольно отправлять UDP-пакеты, если, как упоминалось в danben, не настроена статическая переадресация портов.
Существует UPnP , который позволяет клиентам в основном устанавливать свои собственные правила временного перенаправления портов, но я не знаю много о специфике.
Что вы должны сделать, это сделать так, чтобы клиент установил TCP / IP-соединение с сервером, и тогда весь трафик на этом соединении, как восходящий, так и нисходящий, должен нормально обрабатываться маршрутизатором. Если у вашего сервера нет общедоступного IP-адреса, вам необходимо настроить статическую переадресацию портов на маршрутизаторе таким образом, чтобы весь трафик, поступающий на определенный порт, направлялся на частный IP-адрес внутри сети. Это, вероятно, означает, что вам также необходимо назначить статический частный IP-адрес серверу.