我正在制作http / 1.1服务器,以更好地了解网络服务器的工作原理。
我看到http / 1.1版本默认支持“保持活动”以改善网络,因此我试图弄清楚如何实现它...
例如,如果客户访问一页, 并发送这两个请求(一个第一次发送给index.html,另一个发送给favicon),无论请求来自哪个客户端,我的服务器都会为每个请求创建两个套接字。
select(...);
FD_ISSET(fd, &read_set);
if (fd == server_socket)
{
// here, i want to add code
// if request come from same client and socket is still alive,
// I want to reuse it without creating new socket again.
...
// else if request is another new client, then make connection
new_socket = accept(fd, (sockaddr *)&new_address, &new_len);
}
如何检测客户端是否为同一客户端? 感谢您的阅读。
答案 0 :(得分:2)
我认为您混合了两件事:服务器套接字用于接受传入的连接。 new_socket
用于读取数据。如果要处理keep-alive
,则不应关闭new_socket
,而应使用select