2013-07-31 55 views
29

webApplicationでログに記録されたユーザーのIPアドレスを印刷しようとしています。ユーザーがIPアドレス192.168.10.120:8080/WebApplicationを使用して別のPC(同じネットワークの下にあるWebアプリケーションが自分のPCで実行されている)から接続する場合は、コードrequest.getRemoteAddr()またはrequest.getLocalAddr())が自分のIPアドレスを返します。 Webアプリケーションを実行しているPCからログインすると、このIPアドレスは0:0:0:0:0:0:0:1になります。

なぜですか?これらのコマンドの違いは何ですか(私はどのコマンドを使うべきですか)。ありがとうございました!request.getRemoteAddr()を使用すると、0:0:0:0:0:0:0:1

+4

localhostはそのIPを返します。他のコンピュータでは、実際のIPが表示されます。 – Makky

+0

ありがとう@Makkyあなたはそれらの2つのコマンドの違いを知っていますか? – yaylitzis

+0

'getLocalAddr()'は、リクエストを受信するマシンのIPアドレスを取得します。 [ソース](http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getLocalAddr())対照的に、 'getRemoteAddr()'は、リソースを要求するマシンのIPアドレスを取得します。[Source](http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getRemoteAddr() )。 –

答えて

29

ローカルマシンでアクセスしようとしているので、その値が返されます。しかし、あなたの友人へのアクセスをのいずれかを聞かせて、あなたはjavadocをよりgetRemoteAddr

と期待される結果を受け取ります。

getRemoteAddr - 返し、要求を送信したクライアントまたは最後のプロキシのIPアドレス

getLocalAddr - 要求を受信したインターフェイスのIPアドレスを返します。

4

getRemoteAddr()は、あなたの目的を解決しますが、クライアントがどのプロキシの背後にある場合、あなたは、プロキシのIPアドレスを取得します:

をリクエストを送信したクライアントまたは最後のプロキシ のインターネットプロトコル(IP)アドレスを返します。アプリケーションが実行されているサーバーのIPを返す

getLocalAddr()。

27

IPv4からIPv6に移行すると、ループバックアドレス(localhost)が0:0:0:0:0:0:0:1から127.0.0.1に変更されているため、このアドレスを取得しています。機能については

  • getRemoteAddr() IP

  • getLocalAddr()は、アプリケーションが

-2

代わりのURLを与える上で実行されている あるサーバーのIPを返すクライアントを返します。 「」は「http://IP:port/」、 あなたはリモートアドレスを取得します。

+1

これは質問に答えず、すでに受け入れられている回答があります。 – ziggystar

関連する問題