2012年12月31日月曜日

JavaでIPv4アドレスを取得する方法

Javaで自分のPCのローカルホストのIPv4アドレスを取得する方法のメモです。

やっていることは、自分のPCが所持しているアドレスをすべて探索し、それらをIPv4の正規表現でチェックしているだけです。また、このときループバックアドレスは除外している。IPv6も正規表現を変えれば対応できます。

Pattern p = Pattern.compile("^(\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])$");
try {
Enumeration<NetworkInterface> enuIfs = NetworkInterface.getNetworkInterfaces();
while (enuIfs.hasMoreElements()) {
NetworkInterface nic = enuIfs.nextElement();
Enumeration<InetAddress> enuAddress = nic.getInetAddresses();
while (enuAddress.hasMoreElements()) {
InetAddress address = enuAddress.nextElement();
Matcher m = p.matcher(address.getHostName());
if (m.find() && !address.isLoopbackAddress()) {
System.out.println(address.getHostName());
}
}
}
} catch (SocketException e) {
e.printStackTrace();
}


補足
  • ローカルホストを取得する方法として、InetAddress.getLocalHost()でアドレスを取得できるが、PCが複数アドレスを所持している場合は、こちらはうまく動作しない場合がある。 

  • IPv4の判定として"address instanceof Inet4Address" といった感じでクラスでも判定できる。しかし、こちらでやるとローカルホストだけでなく、他のNICのアドレスも取得できてしまう(例えばVmwareを使っている場合は、VMware Network AdapterのIPも取得できる)。 そこで、今回はアドレスのホスト名をIPv4の正規表現でチェックして判定している。こちらの方法だと、ローカルホストだけ取得できた。

2012年12月1日土曜日

Eclipse - エディタの切り替えショートカットメモ


クイックアクセス: Ctrl + 3
ステップ: ショートカット → 検索、選択 → Enter
エディター、ビュー、メニューなどの項目を検索し、簡単に呼び出せる。
また、前回アクセスした履歴も表示されるので結構便利。
ただし、ウィンドウをまたいでの呼び出しはできない。


エディタの即時切り替え: Ctrl + e
ステップ: ショートカット → 検索、選択 → Enter
エディターを検索から、即時切り替えできる。
ただし、エディターを分割している場合は、アクティブになっている分割されたエディタ上のファイルしか検索できないので微妙。



エディタの切り替え: Ctrl + Shift + e
ステップ: ショートカット → 選択 → Enter
エディタのファイル一覧が別ウィンドウで表示され、ファイルを選択しての移動となる。
ファイル名だけでなく、ファイルパスも表示される。
また、ウィンドウをまたいでのファイル選択ができるので、複数ウィンドウで作業する場合は便利。
しかし、検索機能がついてないのが残念。


次のエディタ(ダイアログあり): Ctrl + F6
前のエディタ(ダイアログあり): Ctrl + Shift + F6
ステップ: ショートカット*n → ボタンを離す
エディタのファイル一覧がダイアログで表示され、ショートカットを何度か押してファイルを選択する。
分割されたエディタをまたいでの移動は可能だが、ウィンドウをまたいでの移動ができない。


次のエディタ(ダイアログなし): Ctrl + PgDown
前のエディタ(ダイアログなし): Ctrl + PgUp
ステップ: ショートカット
ショートカットを押すたびに、次の(前の)エディタに切り替わる。
分割されたエディタ間の移動はできない。