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(); } }これを実行してみると以下のようになる.
ktanaka@ux019 java HttpTest user.ecc.u-tokyo.ac.jp /index.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <TITLE>ECCSユーザーのための実験用WEBサーバー</TITLE> </HEAD> <!-- Background white, links blue (unvisited), navy (visited), red (active) - <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#000080" ALINK="#FF0000"> <img src="ecc.gif"> <H1 ALIGN="CENTER"> ECCSユーザーのための実験用WEBサーバー </H1> <H2 align="center"><a href="http://apache.ecc.u-tokyo.ac.jp/"> Apache1.3.27</a> running on <a href="http://www.sun.co.jp/software/solaris/el/index.html">x86 Solaris8</a> </H2> <UL> <LI><H2><A HREF="http://www.ecc.u-tokyo.ac.jp/announce/2002/04/18_userecc.htmCAUTION</a></H2> <LI><H2><A HREF="charset.html">About Character Set</a></H2> <LI><H2><A HREF="http://www.ecc.u-tokyo.ac.jp/guide/web/web.html">実験についてのアナウンス></H2> <LI><H2><A HREF="end.html">実験用WEBサーバーの利用中止手続きについて</A></H2> <LI><H2><A HREF="/userslist/">実験参加者リスト</A></H2> <LI><H2><A HREF="manual/index.html">Apacheに関するドキュメント</A></H2> <LI><H2><A HREF="/server-status">現在のサーバーの状態</A> only from inside EC/H2> <LI><H2><A HREF="/server-info">現在のサーバーの設定</A> only from inside ECCS2> <LI><H2><A HREF="/logs">ログ</a> only from inside ECCS</H2> <DIV ALIGN="CENTER"> <IMG SRC="apache_pb.gif" ALT="apachelogo"> </DIV> <DIV ALIGN="CENTER"> <IMG SRC="pbsANIMloop.gif" ALT="solarislogo"> </DIV> </UL> <hr> <a mailto="www-admin@ecc.u-tokyo.ac.jp">www-admin@ecc.u-tokyo.ac.jp</a> </BODY> </HTML>次に進む