アプリ版:「スタンプのみでお礼する」機能のリリースについて

Javaで自分のIPアドレスを取得するプログラムを作っているのですが
どうやってもLAN内部のアドレスでしか取得できません
本当はWAN側のアドレスを取得したいのですが・・・
誰か知っている人がいましたら教えてください

Javaのバージョンは1.4でできるならなおよいですが1.6でも十分大丈夫です

A 回答 (3件)

LANのルータがすべての情報を持っていますが、最近はセキュリティを固めて内部からも簡単にアクセスできないことが多いです。

ということは、外部サイトに調べてもらう方法しかありませんから、こんなプログラムをよく使います(全角スペースは半角スペースに変えてからコンパイルしてください):
--------------
/* 注意: whatismyipのサイトは、十分な時間間隔をあけて再接続しないと、サーバの過負荷で長時間無反応になることがあります。*/
import java.net.*;
import java.io.*;

public class FindExternalIP {

 public static void main(String[] args) throws Exception {
  String line = "--null--";

  //無料サービスサイト: http://whatismyip.com/
  URL url = new URL("http://www.whatismyip.com/automation/n09230945.a …
  InputStreamReader in = new InputStreamReader(url.openStream());
  BufferedReader br = new BufferedReader(in);
  line = br.readLine();
  System.out.println(line);

  //上と類似のやり方, スイスのジュネーブのCERNのtraceroute Webサーバ
  int i = 0;
  url = new URL("http://iepmbw.cern.ch/cgi-bin/traceroute.pl");
  in = new InputStreamReader(url.openStream());
  br = new BufferedReader(in);
  while ((line = br.readLine()) != null){
   if ((i = line.indexOf("Your host is:")) != -1){
    line = line.substring(i + 14, i + 24);
    break;
   }
  }
  System.out.println(line);
 }
}
-----------------------------------
    • good
    • 0
この回答へのお礼

やはり外部にアクセスしないと無理ですかね
この方法は一応考えてはいたのですが・・・

ところでこのコードをコンパイルすると
1つ目のIPはすべて出ますが2行目のIPがたとえば1.2.3.4だとすると4の部分がないのですが・・・
このサーバの仕様ですか?

お礼日時:2008/06/30 19:39

> 4の部分がないのですが・・・


すいません!。substringの長さを長くしてください。

類似サイトです:
http://checkip.dyndns.org:8245/
    • good
    • 0
この回答へのお礼

substringだと工夫しないとIPの文字数によって結果が変わると考えますのでやめておきます
やはりPerlで表示させてダウンロードすることにしました

やっと問題が解決しました
回答ありがとうございました

お礼日時:2008/07/03 17:42

mamuru77さんのネットワーク環境がわからないので、


何とも答え難いです。
LANがどのような構成になっていて、どのようにWANに接続しているか、
説明が必要でしょう。
また、「LAN内部のアドレスでしか取得できません」とありますが、
どのようなコードでしょうか。
差し障りが無ければ、提示した方が良い回答を得られると思います。

この回答への補足

構成はとりあえずルータをつないでいます
LANの中のIPはそれが割り当てています

コードは
import java.net.*;

InetAddress.getLocalHost().getHostAddress().toString()

これで得られるStringがIPになっているのですがLANの内部のアドレスを返します
外部のアドレスはどうやっても返せそうにないのですが

補足日時:2008/06/30 19:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!