【问题标题】:TCP/IP: set socket option for keep-alive after connection has been establishedTCP/IP:建立连接后设置保持活动的套接字选项
【发布时间】:2015-10-17 14:11:52
【问题描述】:

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

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

【问题讨论】:

  • 您可以随时设置。当然,在accept(), 之前没有套接字可以设置它,除非你可以在监听套接字上设置它并让它被所有接受的套接字继承。
  • 您可以将此作为答案发布,以便我接受

标签: linux sockets tcp window lwip


【解决方案1】:

正如 EJP 所说,您可以随时设置。 man page 说:

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;
    }

您也可以阅读此tutorial 了解更多详情。

【讨论】:

    猜你喜欢
    • 2020-12-20
    • 2020-01-12
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    相关资源
    最近更新 更多