我注意到http1.1支持长连接。 如果Keep-Alive为true,则在完成请求后tcp连接将不会关闭。 但是,如果我尝试创建服务器,请使用ServerSocket。 每当我处理请求时,我都会将响应发送到客户端,然后我必须关闭套接字(关闭tcp连接) 那么如何重用tcp连接呢?
我必须关闭套接字的原因是浏览器必须知道连接已完成。
这样的代码
ServerSocket serverSocket;
while (true){
Socket socket = serverSocket.accept();
thread{
request = socket.readRequest();
socket.writeHttpResponse();
socket.close();
}
}
答案 0 :(得分:0)
实际上,我们不必关闭套接字。 当我们发送HTTP响应时,浏览器将根据Request Header中的Content-Length知道响应的结束。 完成向浏览器的sendind响应后,如果我们保持套接字输入,则只有使用1.1 proto并具有HeaderConnection:Keep-Alive的情况下,我们才能继续从该套接字获取enxt请求。