2011-04-06 63 views
1

我想構建一個非常簡單的Web服務器。我得到它的工作。現在我使用InputStream並停在第一行的末尾。我想我可以停止當返回-1(因爲這將是流的結束),但它凍結。爲什麼?試圖構建非常簡單的Web服務器在Java中,它凍結

connection=server.accept(); 
OutputStream out=new BufferedOutputStream(connection.getOutputStream()); 
InputStream in = new BufferedInputStream(connection.getInputStream()); 

// read in one line 
StringBuffer request = new StringBuffer(1000); 
System.out.println("get connection reading in data \r"); 
while(true) 
{ 
    int c=in.read(); 
    // if (c=='\r') break; 
    if (c==-1) break; 
    request.append((char)c); 
} 
System.out.println(request); 
+0

一次讀取一個字符會很慢......我會在套接字的輸入流中包裝一個BufferedInputStream,並使用readLine一次讀取一行。 – MeBigFatGuy 2011-04-06 13:07:05

+0

我相信這應該是在元,但爲什麼我們必須等待審批的編輯?特別是源代碼格式編輯,大大改進了問題的可讀性? – KevinDTimm 2011-04-06 13:19:07

回答

3

您正在等待客戶端關閉其連接 - 它不會這麼做,因爲它正在等待響應!

您需要閱讀請求並根據頭文件完成工作。