保持活动套接字选项和“连接:保持活动”标头

时间:2020-07-17 14:14:48

标签: sockets http httpserver keep-alive tcp-keepalive

我的套接字(套接字,我在accept()之后得到的)的选项如何与HTTP标头“ Connection:Keep-Alive”相关? 我知道,如果我想让套接字保持活动状态,则需要设置以下选项: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属性的支持?

我将不胜感激。预先谢谢你。

0 个答案:

没有答案