我的套接字(套接字,我在 accept() 之后获得)的选项如何与 HTTP 标头“连接:保持活动”相关?我知道,如果我想让我的套接字保持活动状态,我需要设置以下选项:SO_KEEPALIVE、TCP_KEEPIDLE、TCP_KEEPINTVL 和 TCP_KEEPCNT。例如,如果我想等待 10 秒,然后以 2 秒的间隔发送最多 10 个探测,在断开连接之前,我会写这样的内容:
int yes = 1;
setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, &yes, sizeof(int);
int idle = 10;
setsockopt(sock, IPPROTO_TCP, TCP_KEEPIDLE, &idle, sizeof(int));
int interval = 2;
setsockopt(sock, IPPROTO_TCP, TCP_KEEPINTVL, &interval, sizeof(int));
int maxpkt = 10;
setsockopt(sock, IPPROTO_TCP, TCP_KEEPCNT, &maxpkt, sizeof(int));
如果我打算保持连接打开最多五个事务,或者直到它空闲两分钟,我将在我的响应中发送下一个标头:
Connection: Keep-Alive
Keep-Alive: max=5, timeout=120
一切都好,但我不明白这些事情是如何相互关联的。我应该如何向我的 HTTP 服务器添加对 Keep-Alive 属性的支持?
我将不胜感激任何帮助。先感谢您。