如何检测http请求是否来自同一客户端?

时间:2020-05-25 22:03:10

标签: c++ sockets http

我正在制作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);
}

如何检测客户端是否为同一客户端? 感谢您的阅读。

1 个答案:

答案 0 :(得分:2)

我认为您混合了两件事:服务器套接字用于接受传入的连接。 new_socket用于读取数据。如果要处理keep-alive,则不应关闭new_socket,而应使用select

在该套接字上等待数据