2013-07-31 18 views
29

Sto tentando di stampare l'indirizzo IP dell'utente registrato nella mia webApplication. Se un utente si connette da un altro PC (che si trova nella stessa rete, mentre l'applicazione Web è in esecuzione sul mio PC) utilizzando l'indirizzo IP 192.168.10.120:8080/WebApplication il codice request.getRemoteAddr() o request.getLocalAddr()) restituisce il suo indirizzo IP. Quando accedo dal mio pc che esegue l'applicazione web, ottengo questo indirizzo IP 0: 0: 0: 0: 0: 0: 0: 1.

Perché è quello? E qual è la differenza tra questi comandi (che dovrei usare?). Grazie mille!Utilizzo di request.getRemoteAddr() restituisce 0: 0: 0: 0: 0: 0: 0: 1

+4

localhost restituirebbe quell'IP. Su altri computer vedrai l'IP attuale. – Makky

+0

Grazie a @Makky conosci la differenza tra questi 2 comandi? – yaylitzis

+0

'getLocalAddr()' ottiene l'indirizzo IP della macchina per ricevere la richiesta. [Fonte] (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getLocalAddr()). Al contrario, 'getRemoteAddr()' ottiene l'indirizzo IP della macchina per richiedere la risorsa [Source] (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteAddr()). –

risposta

29

Nel tuo caso, mentre stai tentando di accedervi sul tuo computer locale, restituirà tale valore. Ma lasciare che uno del tuo amico accedervi, e si riceverà il risultato atteso con getRemoteAddr

Dal javadoc:

getRemoteAddr - Restituisce l'indirizzo IP del client o l'ultimo proxy che ha inviato la richiesta

getLocalAddr - Restituisce l'indirizzo IP dell'interfaccia su cui è stata ricevuta la richiesta.

4

getRemoteAddr() risolve il vostro scopo, ma se il cliente è dietro ogni procura allora si otterrà l'indirizzo IP del Proxy:

restituisce l'indirizzo IP (Internet Protocol) del cliente o ultima delega che ha inviato la richiesta.

getLocalAddr() restituisce l'IP del server l'applicazione è in esecuzione.

27

Mentre passiamo a IPv6 da IPv4, stanno cambiando l'indirizzo di loopback (localhost) a 0:0:0:0:0:0:0:1 da 127.0.0.1 ecco perché stai ricevendo questo indirizzo.

Per quanto riguarda le funzioni di:

  • getRemoteAddr() restituisce i client IP

  • getLocalAddr() restituisce l'IP del server l'applicazione è esecuzione su