2017-04-17 6 views
0

私はルータを持っていて、私はこのコマンドで私のIPアドレスを尋ねるとき: InetAddress.getLocalHost()。getHostAddress(); 私は私の内部IPアドレスを得ました。 ウェブ上でwww.whatismyip.comページに入ると、別のIPアドレスが得られ、それが私の実際のアドレスです。どのように私の外側のIPアドレスをJavaで質問する

私はJavaでこの実際のIPアドレスをどのように尋ねますか?

ありがとうございました...

+0

内部IPアドレスとは、ローカルホストを意味しますか? 127.0.0.1 –

+1

私はあなたができるとは思わない。その情報がアプリケーションに明示的に与えられていない限り、プロキシやゲートウェイを使用していることを知る方法はありません。あなたの "本当の" IPアドレスが何であるか気にしないようにコードを設計するのが最善です。 – markspace

+0

http://checkip.amazonaws.com/ – JediBurrell

答えて

-1

多分このようなごちゃごちゃ?

import org.apache.commons.io.IOUtils; 
import java.io.BufferedInputStream; 
import java.net.HttpURLConnection; 
import java.net.URL; 


URL url = new URL("http://myexternalip.com/raw"); 

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 

InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 

String externalIP = IOUtils.toString(in, "UTF-8"); 
+0

こんにちは、 ここからです:org.apache.commons.io.IOUtils; ? これは私のJavaでは不明です。 –

+0

「プロジェクト構造」を開き、モジュール(Android Studioのアプリケーションなど)を選択し、「依存関係」を選択してプラスボタンを押します。ライブラリの依存関係を選択します。検索フィールドに「org.apache.commons.io」と入力し、「org.apache.directory.studio:org.apache.commons.io:2.4」またはこのようなsmthを追加すると、通常はリストの最初の部分になります。 –

+0

私は同じ質問をしています。なぜ外部IPが必要ですか? NATと他の何かのために、サーバーなしでエンドツーエンドのメッセージを送ることはできません。 –

関連する問題