2016-12-07 6 views
-1

私のサーバからjavaを使用してユーザにマシンipAddressを取得しようとしています。Javaを使用してユーザのマシンIPを取得する方法

私は次のコードを使用し、ローカルで正常に動作します。

このクラスを使用して
  URL url = new URL("http://www.geoplugin.net/json.gp?jsoncallback=?"); 

      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setRequestMethod("GET"); 

      BufferedReader in = new BufferedReader(
        new InputStreamReader(conn.getInputStream())); 
      String inputLine; 
      StringBuffer response = new StringBuffer(); 

      while ((inputLine = in.readLine()) != null) { 
       response.append(inputLine); 
      } 
      in.close(); 

      System.out.println(response.toString()); 
     } 
    } 

、応答は私の地元のWebアプリでIPを示しています。(localhostを:8080 /て、myApp/getIp)

私はAWSサーバーにこの戦争を展開して、サーブレットを実行しようとしました。しかし、これは常にAWSのIPアドレスだけを表示します。 (myIp:8080/myApp/getIp)

私のマシンのIPは表示されません。

私のコードで何が間違っていたのですか?誰かがこれを助けることができますか?

+2

あなたが投稿する前に検索します。 [これを読む](https://www.mkyong.com/java/how-to-get-client-ip-address-in-java/) – 31piy

+1

*私はAWSサーバーにこの戦争を展開し、サーブレットを実行しようとしました。しかし、これは常にAWSのIPアドレスだけを表示します* ... *ローカルで動作しています* ...右...それはAWSが要求をしているので、あなたはAWS IPを取得します。あなたはそのサイトに接続するとあなたのIPを取得...それはどのように動作します。 –

+0

マシンに複数のIPアドレスが設定されていることを忘れないでください。あなたがここで達成しようとしていることはまったく明確ではないので、明確にしてください。 –

答えて

1
  1. ServletRequest.getRemoteAddr()OR

  2. getRemoteHost()とgetRemotePort()

べきあなたは、クライアントのIPすなわちを取得したい場合は、実際のクライアント

0

の詳細を返します。ユーザーがブラウザを介してWebアプリケーションにアクセスすると、(クライアント側スクリプト)JavaScriptを使用してそのようにすることができます。以下はその単純な例です。

function show(response) { 
 
    console.log(response); 
 
    var html = 'Something went wrong !'; 
 
    if (200 == response.geoplugin_status) { 
 
    html = 'Got your ip as: ' + response.geoplugin_request; 
 
    } 
 
    document.getElementById('ip').innerHTML = html; 
 
} 
 

 
var script = document.createElement('script'); 
 
script.async = true; 
 
script.src = 'http://www.geoplugin.net/json.gp?jsoncallback=show'; 
 
document.getElementById('ip').appendChild(script);
<div id='ip'>Fetching IP ...</div>

+0

これは私がすでに実装したものです。しかし、我々はいくつかのセキュリティ上の問題があるので、バックエンドと一緒に行く必要があります。ありがとうArvind –

+0

@Clara、このようなAPIの使い方で_security issues_ここで対処できますか?私を間違えないでください、私は理解のために頼んでいます。 – Arvind

関連する問題