2013-07-31 25 views
29

Próbuję wydrukować adres IP zalogowanego użytkownika w mojej aplikacji webowej. Jeśli użytkownik łączy się z innym komputerem PC (znajdującym się w tej samej sieci, co aplikacja internetowa działająca na moim komputerze) przy użyciu adresu IP 192.168.10.120:8080/WebApplication, jego kod IP zwróci kod request.getRemoteAddr() lub request.getLocalAddr()). Kiedy loguję się z komputera, na którym uruchamiam aplikację internetową, otrzymuję ten adres IP 0: 0: 0: 0: 0: 0: 0: 1.

Dlaczego tak jest? Jaka jest różnica między tymi poleceniami (których powinienem użyć?). Dziękuję bardzo!Użycie request.getRemoteAddr() zwraca 0: 0: 0: 0: 0: 0: 0: 1

+4

localhost zwróci ten adres IP. Na innych komputerach zobaczysz rzeczywiste IP. – Makky

+0

Dzięki @Makky Czy znasz różnicę między tymi 2 poleceniami? – yaylitzis

+0

'getLocalAddr()' pobiera adres IP urządzenia, aby odebrać żądanie. [Źródło] (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getLocalAddr()). Natomiast 'getRemoteAddr()' uzyskuje adres IP urządzenia, aby zażądać zasobu [Źródło] (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteAddr()). –

Odpowiedz

29

W twoim przypadku, próbujesz uzyskać do niego dostęp na komputerze lokalnym, więc zwróci tę wartość. Ale niech jeden z dostępem go znajomemu, a otrzymasz oczekiwany rezultat z getRemoteAddr

Z javadoc:

getRemoteAddr - zwraca adres IP klienta lub ostatniego pełnomocnika, który wysłał żądanie

getLocalAddr - Zwraca adres IP interfejsu, na który otrzymano żądanie.

4

getRemoteAddr() rozwiązuje swój cel, ale jeśli klient jest za każdym pełnomocnika następnie otrzymasz adres IP serwera proxy:

Zwraca Internet Protocol (IP) Adres strony klienta lub ostatniego pełnomocnika który wysłał żądanie.

getLocalAddr() zwraca IP serwera aplikacji jest uruchomiony.

27

Gdy przechodzimy do IPv6 z IPv4, zmieniają adres pętli zwrotnej (localhost) na 0:0:0:0:0:0:0:1 z 127.0.0.1, dlatego otrzymujesz ten adres.

chodzi o funkcje:

  • getRemoteAddr() zwraca klientom IP

  • getLocalAddr() zwraca IP serwera aplikacja jest uruchomiony na

Powiązane problemy