自分が使用中のコンピュータの名前をホスト名といいます。コンピュータ名、マシン名などと呼ばれることもあります。一方数値で表現された IPアドレスもあります。この2つを調べるプログラムです。
/** ホスト名とIPアドレスを表示する */ import java.net.*; public class MyHost { public static void main( String[] args ) { try { InetAddress myHost = InetAddress.getLocalHost(); System.out.println( "Host Name:" + myHost.getHostName() ); System.out.println( "IP Address:" + myHost.getHostAddress() ); } catch( UnknownHostException e ){ System.err.println( e ); } } }
動作結果
$ java MyHost Host Name:vineXX IP Address:10.10.20.XX
ここでXXは2桁の数値を表します。vineの部分は使用しているコンピュータによってstarやsheepと表示されるかもしれません。
IP Address も使用しているコンピュータによって異なります。
引数に指定されたホスト名または IPアドレスからホスト名とIPアドレスを調べて表示するプログラムです。つまりホスト名からIPアドレスを調べる、またその逆をやります。ネットワークの中ではこの作業は頻繁に必要になります。
/** 他のホストについて調べる */ import java.net.*; public class HostInfo { public static void main( String[] args ) { try { InetAddress host; host = InetAddress.getByName( args[0] ); System.out.println( "Host Name:" + host.getHostName() ); System.out.println( "IP Address:" + host.getHostAddress() ); } catch( UnknownHostException e ) { System.err.println( "Host not found" ); System.err.println( e ); } } }
実行にはホスト名を引数で与える必要があります。
$ java HostInfo vineXX Host Name:vineXX IP Address:10.10.20.XX
引数を忘れると、
$ java HostInfo Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at HostInfo.main(HostInfo.java:8)
となります。
java.net.InetAddress
IP (Internet Protocol) アドレスを表すクラスです。 IP アドレスは、IP で使用される 32 ビットまたは 128 ビットの符号なしの数字。 人間のために 8 ビット4個 または 8 ビット16個で表されます。
TCP/IPのネットワークでは、全ての機械(正確にはネットワークの出入口)にこのIPアドレスとホスト名(ホストネーム)と呼ばれる名前がついています。
名前はドメイン内では www とか mail とか vine01 とかの1つの単語で済ませられますが、インターネットにでると、www.st.seiai.ed.jp など、ドメイン名を加えます。これが正式名称( FQDN )です。
public static InetAddress getLocalHost()
ローカルホストを返します。
public String getHostName()
この IP アドレスに対応するホスト名を取得します。
public String getHostAddress()
テキスト表現の IP アドレス文字列を返します
public static InetAddress getByName(String host)
指定されたホスト名を持つホストの IP アドレスを取得します。