我的套接字(套接字,我在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属性的支持?
我将不胜感激。预先谢谢你。