挑戦する
最短時間で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 /に移動します