Я пытаюсь напечатать IP-адрес зарегистрированного пользователя в моем веб-приложении. Если пользователь подключается с другого ПК (который находится в той же сети, что и веб-приложение работает на моем компьютере) с использованием IP-адреса 192.168.10.120:8080/WebApplication
, код request.getRemoteAddr()
или request.getLocalAddr())
возвращает свой IP-адрес. Когда я вхожу в систему с моего компьютера, который запускает веб-приложение, я получаю этот IP-адрес 0: 0: 0: 0: 0: 0: 0: 1.
Почему? И какая разница между этими командами (что я должен использовать?). Большое вам спасибо!
Использование request.getRemoteAddr() возвращает 0: 0: 0: 0: 0: 0: 0: 1
Ответ 1
В вашем случае, когда вы пытаетесь получить к нему доступ на своем локальном компьютере, он вернет это значение. Но пусть один из ваших друзей получит доступ к нему, и вы получите ожидаемый результат с помощью getRemoteAddr
Из javadoc:
getRemoteAddr - возвращает IP-адрес клиента или последнего прокси-сервера, отправившего запрос
getLocalAddr - возвращает IP-адрес интерфейса, на который был получен запрос.
Ответ 2
Когда мы переходим к IPv6 с IPv4, они меняют адрес loopback (localhost) на 0:0:0:0:0:0:0:1
из 127.0.0.1
, поэтому вы получаете этот адрес.
Что касается функций:
-
getRemoteAddr()
возвращает клиентам IP -
getLocalAddr()
возвращает IP-адрес сервера, на котором установлено приложение. работает на
Ответ 3
getRemoteAddr() решает вашу цель, но если клиент находится за любым прокси-сервером, тогда вы получите IP-адрес прокси-сервера
Возвращает IP-адрес клиента или последний прокси-сервер который отправил запрос.
getLocalAddr() возвращает IP-адрес сервера, на котором запущено приложение.
Ответ 4
вместо указания url как " http://localhost:port/" предоставить url как " http://IP:port/" Вы получите удаленный адрес.