2

是否可以在一些假设的应用程序级握手之后设置套接字的SO_KEEPALIVE选项(TCP 保持活动间隔和 TCP 保持活动值)?还是必须在调用 to 之前设置它accept

我关心 Linux、Windows 和 eCos lwIP 堆栈之间的互操作性,因此非常感谢有关这两个平台的信息。

4

1 回答 1

3

正如 EJP 所说,您可以随时设置它。手册页说:

setsockopt() 操作文件描述符sockfd引用的套接字的选项。

SO_KEEPALIVE您可以像这样设置或取消设置

int iOption = 1; // Turn on keep-alive, 0 = disables, 1 = enables
if (setsockopt(socketHandle, SOL_SOCKET, SO_KEEPALIVE, (const char *) &iOption,  sizeof(int)) == SOCKET_ERROR)
    {
           cerr << "Set keepalive: Keepalive option failed" << endl;
    }

您还可以阅读本教程以获取更多详细信息。

于 2015-08-16T12:53:55.010 回答