挑戦する
最短時間でHTTPサーバーを作成します。HTTPサーバーは、起動後にブラウザーに正しく応答し、シンプルなHTMLページを提供します(最小限の時間で、十分なコードがないため、初心者が侵入しやすくなります)。
約15分かかりました。 サーバーはタスクに対処しているようです。
この例の本質は、Socket、ServerSocket、InputStream、OutputStream、およびThreadが何であるかを示すことです。
解決策
import java.net.ServerSocket; import java.net.Socket; import java.io.InputStream; import java.io.OutputStream; import java.io.InputStreamReader; import java.io.BufferedReader; / ** * yar 09/09/2009により作成 * / パブリッククラスHttpServer { public static void main(String [] args)throws Throwable { ServerSocket ss =新しいServerSocket(8080); while(true){ ソケットs = ss.accept(); System.err.println(「クライアント受け入れ」); 新しいスレッド(新しいSocketProcessor(s))。start(); } } プライベート静的クラスSocketProcessorはRunnable { プライベートソケット プライベートInputStreamは; プライベートOutputStream os; private SocketProcessor(Socket s)throws Throwable { this.s = s; this.is = s.getInputStream(); this.os = s.getOutputStream(); } public void run(){ { readInputHeaders(); writeResponse( "<html> <body> <h1> Habrahabrからこんにちは</ h1> </ body> </ html>"); } catch(Throwable t){ / *何もしない* / }最後に{ { s.close(); } catch(Throwable t){ / *何もしない* / } } System.err.println(「クライアント処理が終了しました」); } private void writeResponse(String s)throws Throwable { 文字列応答= "HTTP / 1.1 200 OK \ r \ n" + 「サーバー:YarServer / 2009-09-09 \ r \ n」+ 「コンテンツタイプ:テキスト/ html \ r \ n」+ 「コンテンツ長:」+ s.length()+「\ r \ n」+ 「接続:閉じる\ r \ n \ r \ n」; 文字列の結果=応答+ s; os.write(result.getBytes()); os.flush(); } private void readInputHeaders()throws Throwable { BufferedReader br = new BufferedReader(new InputStreamReader(is)); while(true){ 文字列s = br.readLine(); if(s == null || s.trim()。length()== 0){ 休憩; } } } } }
実行方法
1)HttpServer.javaファイルを作成します
2)このファイルにソーステキストを挿入します
3) javacコマンドHttpServer.javaでコンパイルします
4)コマンドjava -cpを実行します。 HttpServer (ポート8080は空いている必要があります)
5)ブラウザを開き、リンクhttp:// localhost:8080 /に移動します