Как получить общедоступный IP-адрес клиента в сервлете Java

Я использую сервер Tomcat с веб-приложением Java. Мне нужен общедоступный IP-адрес клиента из запроса. Но я не могу этого получить, я использовал методы request.getHeader("x-forwarded-for") request.getRemoteAddr(), но я получаю локальный IP-адрес клиентской машины.


person yogesh    schedule 26.06.2014    source источник
comment
stackoverflow.com/questions/16163874 /   -  person Farhan S.    schedule 26.06.2014


Ответы (2)


Вы запускаете свой сервер в локальной сети. Если это в дикой природе request.getRemoteAddr()должен делать свою работу.

Если вам действительно нужен даже в локальной сети ваш общедоступный IP-адрес, который может быть одинаковым в вашей локальной сети, поскольку он находится за маршрутизатором или чем-то, что использует NAT в моих глазах это не имеет особого смысла. Даже если вы хотите получить общедоступный IP-адрес, используйте такую ​​службу, как ipecho: http://ipecho.net/plain.

person Zarathustra    schedule 26.06.2014
comment
Если он находится в локальной сети, то невозможно получить публичный IP-адрес? - person yogesh; 26.06.2014
comment
Спасибо Заратустре. Мне это нужно, поэтому я попробую этот сервис. Еще раз спасибо. - person yogesh; 26.06.2014

Если вы создаете веб-приложение в 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 и передавать его в список серверов, которые вы отправляете в форму, и передавать ее сервлету.

person Lonewolf    schedule 26.06.2014
comment
Спасибо Джокеру за внимание. Спасибо. - person yogesh; 26.06.2014