2015-04-04 133 views
1

我在實現簡單Web服務器的程序中遇到問題。從Web服務器接收數據

當我發送HTTP請求到Web服務器,Web服務器發送HTTP代碼到客戶端,但我想收到=>我有錯誤「連接被重置!)

clientSocket = new Socket("localhost", 1234); 

BufferedWriter out = new BufferedWriter(
     new OutputStreamWriter(
       new BufferedOutputStream(clientSocket.getOutputStream()), "UTF-8") 
); 
out.write(OUTPUT_HEADERS+"GET /"+"home.html" + " HTTP/1.1\nHost:"+clientSocket.getLocalAddress() +"\nUser-agent: Mozilla/5.0\nAccept-language: fa"); 
out.flush(); 

System.out.println(" waiting..."); 

InputStreamReader isr=new InputStreamReader(clientSocket.getInputStream()); 
BufferedReader br=new BufferedReader(isr); 
while (br.ready()) {     
    System.out.println(br.readLine()); 
} 
+0

是什麼'OUTPUT_HEADERS'包含哪些內容? – 2015-04-25 13:29:03

回答

0

根據HTTP 1.1規範:

http://www.w3.org/Protocols/HTTP/1.1/rfc2616bis/draft-lafon-rfc2616bis-03.html#request

請求和請求頭需要與CR/LF終止

即更改:

out.write(OUTPUT_HEADERS+"GET /"+"home.html" + " HTTP/1.1\nHost:"+clientSocket.getLocalAddress() +"\nUser-agent: Mozilla/5.0\nAccept-language: fa"); 
out.flush(); 

out.write(OUTPUT_HEADERS+"GET /"+"home.html" + " HTTP/1.1\r\nHost:"+clientSocket.getLocalAddress() +"\r\nUser-agent: Mozilla/5.0\r\nAccept-language: fa\r\n"); 
out.write("\r\n"); 
out.flush(); 
+0

很高興幫助。如果答案是你需要的,你可以'接受'它。 – 2015-05-23 17:00:02