自分が使用中のコンピュータの名前をホスト名といいます。コンピュータ名、マシン名などと呼ばれることもあります。一方数値で表現された 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
引数に指定されたホスト名または 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( ArrayIndexOutOfBoundsException e ) { System.err.println("アドレスまたはホスト名を指定してください"); System.err.println("Usage:"); System.err.println(" java Hostinfo hoge.exsample.jp"); System.err.println(" java Hostinfo hoge"); System.err.println(" java Hostinfo 10.10.20.1"); } 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.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 アドレスを取得します。