从Web服务器接收数据
问题描述:
我在实现简单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());
}
答
根据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
是什么'OUTPUT_HEADERS'包含哪些内容? – 2015-04-25 13:29:03