Я использую сервер Tomcat с веб-приложением Java. Мне нужен общедоступный IP-адрес клиента из запроса. Но я не могу этого получить, я использовал методы request.getHeader("x-forwarded-for") request.getRemoteAddr(), но я получаю локальный IP-адрес клиентской машины.
Как получить общедоступный IP-адрес клиента в сервлете Java
Ответы (2)
Вы запускаете свой сервер в локальной сети. Если это в дикой природе request.getRemoteAddr()должен делать свою работу.
Если вам действительно нужен даже в локальной сети ваш общедоступный IP-адрес, который может быть одинаковым в вашей локальной сети, поскольку он находится за маршрутизатором или чем-то, что использует NAT в моих глазах это не имеет особого смысла. Даже если вы хотите получить общедоступный IP-адрес, используйте такую службу, как ipecho: http://ipecho.net/plain.
Если вы создаете веб-приложение в JSP и хотите отправить общедоступный IP-адрес клиента на сервер, вы можете использовать JavaScript с JSP для достижения этой цели.
//JavaScript dynamically created to obtain CLIENT MACHINE'S IP ADDRESS
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://www.telize.com/jsonip?callback=DisplayIP";
document.getElementsByTagName("head")[0].appendChild(script);
//below given function returns CLIENT MACHINE'S IP ADDRESS to the text box
function DisplayIP(response)
{
document.getElementById("clientip").value = response.ip;
}
IP-адрес будет храниться в clientip и передавать его в список серверов, которые вы отправляете в форму, и передавать ее сервлету.