java ホスト名 ドキュメント名とやって,HTTPファイルを標準出力に表示するプログラムを作ってみる.
// 入出力ストリームを使うため java.io.* を import することが必要. import java.io.*; // Socketを使うため java.net.* を import することが必要. import java.net.*; public class HttpTest{ // 途中で IOException が起きるので throws IOException が必要. public static void main(String[] args) throws IOException{ // WWWサーバのホスト名を入れる変数 String webserver=args[0]; // WWWサーバと通信する際のポート番号は通常80番 int http_port=80; // Socket クラスの変数を宣言 Socket sock; // TCP通信をおこなう際の入力ストリーム BufferedReader dis; // TCP通信をおこなう際の出力ストリーム PrintWriter ps; // WWWサーバプログラムと通信するためのソケットを作成 sock=new Socket(webserver,http_port); // 作成したソケットから入力用のストリームを作成 dis=new BufferedReader(new InputStreamReader(sock.getInputStream())); // 作成したソケットから出力用のストリームを作成 ps=new PrintWriter(sock.getOutputStream(),true); // WWWサーバに,「GET ドキュメント名」という文字列を送信 ps.println("GET "+args[1]); // 行入力用の文字列の宣言 String s=null; // ソケットにつながった入力ストリームから // 入力がある間(WWWサーバ側が通信を切ると null が返る)ループを回る while((s=dis.readLine())!=null){ // 文字列を表示する System.out.println(s); } // ソケットを閉じる. sock.close(); } }これを実行してみると以下のようになる.
dell% java HttpTest dell.tanaka.ecc.u-tokyo.ac.jp /index.html <HTML><HEAD> <TITLE>Test Page for Apache</TITLE> </HEAD><BODY> <H1>It Worked!</H1> If you can see this, then your <A HREF="http://www.apache.org/">Apache</A> installation was successful. You may now add content to this directory and replace this page. <P> The Apache <A HREF="manual/index.html">documentation has been included with this distribution.</A> <P> You are free to use the image below on an Apache-powered web server. Thanks for using Apache! <P> <img src="apache_pb.gif"> </BODY></HTML>簡単なサーバプログラム