0

以下のような Web サイトにアクセスせずに、Java のみを使用してコンピューターの外部 IP を取得するにはどうすればよいですか。

String ip = "";

    try
    {

        URL whatismyip;

        whatismyip = new URL("http://checkip.amazonaws.com");

        BufferedReader in = null;

        in = new BufferedReader(new InputStreamReader(whatismyip.openStream()));

        ip = in.readLine();

    } catch (UnknownHostException e)
    {
        e.printStackTrace();
    } catch (MalformedURLException e)
    {
        e.printStackTrace();
    } catch (IOException e)
    {
        e.printStackTrace();
    }

私がこれを望まない理由は、このサイトが 1 日でもダウンしていると、大きな問題が発生するからです。

編集:

質問をもう少し明確に定義すると、Java にはユーザーのマシン IP を取得する方法がありますか? もしそうなら、それらは何ですか?

4

1 に答える 1

3

NAT を使用する一般的な家庭環境 (コンピューター - ルーター - インターネット) にいると仮定すると、ローカル マシンで実行されているプログラムからそのアドレス (83.154.48.7 など) を取得することはできません。「外部」アドレスは実際にはルーターのアドレスであるため、できることは、インストールされているネットワークアダプターのアドレス (192.0.0.1 などのアドレス) を取得することです。

外部サイトがルーターのアドレス (83.154.48.7) に応答し、ルーターが応答を PC に送信するため、外部サイトに問い合わせる必要があります。

ルーターに自分の IP を尋ねることもできますが、PC から見ると、ルーターはそのネットワークに対して 192.0.0.255 のようなアドレスを持っています。(ただし、ルーターですべてのアドレスを取得してフィルタリングできるかどうかはわかりません)

いつかこのサイトがダウンしたら、私は大きな問題を抱えることになるでしょう.

アドレスを取得できるサイトのリストを用意して、そのうちの 1 つが起動するまで 1 つずつ試すことができます。

于 2013-08-02T18:14:57.567 に答える