ホスト名とIPアドレス

ホスト名とIPアドレスを表示

自分が使用中のコンピュータの名前をホスト名といいます。コンピュータ名、マシン名などと呼ばれることもあります。一方数値で表現された IPアドレスもあります。この2つを調べるプログラムです。

プログラム名 MyHost.java

/** ホスト名と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アドレスを調べる、またその逆をやります。ネットワークの中ではこの作業は頻繁に必要になります。

プログラム名 HostInfo.java

/** 他のホストについて調べる */
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)

となります。

クラス InetAddress

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 )です。

getLocalHost

public static InetAddress getLocalHost()

ローカルホストを返します。

getHostName

public String getHostName()

この IP アドレスに対応するホスト名を取得します。

getHostAddress

public String getHostAddress()

テキスト表現の IP アドレス文字列を返します

getByName

public static InetAddress getByName(String host)

指定されたホスト名を持つホストの IP アドレスを取得します。


Javaプログラミング
聖愛中学高等学校
http://www.seiai.ed.jp/
Feb.2009
Nov.2012