Я пытаюсь сделать приложение, которое состоит из клиента Java UDP и сервера PHP UDP. Я думаю о связывании сервера с клиентом через Интернет, потому что у клиента может не быть реального / публичного IP-адреса. Хотя сервер сам по себе является веб-приложением, которое откроет прослушиватель по общему адресу через некоторый порт. Задача клиента — передавать (отправлять / получать) данные по UDP.
Связывающие части:
Это будет зависеть от политики брандмауэра / NAT на данном клиентском сайте, но обычная настройка — разрешить UDP-доступ к серверу, а затем разрешить соответствующие ответные пакеты обратно на основе адресов источника и назначения и номеров портов.
Было бы проблемой, если бы вы попытались создать сервер за вашим маршрутизатором.
Ваш маршрутизатор заменит локальный IP-адрес клиента публичным IP-адресом вашего маршрутизатора в тот момент, когда вы отправляете что-либо на сервер. Маршрутизатор будет внутренне хранить таблицу перевода. С этой таблицей перевода обращаются, когда сервер отправляет ответ для получения исходного IP-адреса, с которого был получен запрос, а затем ответ просто пересылается на этот IP-адрес. Таким образом, создается впечатление, что вы используете ip @, который выделен для вас, обычно используя DHCP вашим маршрутизатором. Но этот локальный ip @ никогда не виден в интернете только на вашей локальной сети.
Поскольку таблица трансляции создается при попытке отправки на сервер, вы не можете легко настроить сервер за маршрутизатором. Просто потому, что ваш маршрутизатор не будет иметь записи в своей таблице трансляции для маршрутизации запроса, поступающего из Интернета на ваш сервер. Это называется NAT / PAT. Потому что таблица перевода отслеживает IP-адреса и порты.
Все IP-адреса реальны. Но люди говорят о публичном IP @ и локальном IP @. Публичный IP @ — это тот, который используется в Интернете, где локальный ip @ — это тот, который вы используете в локальной сети.