gpt4 book ai didi

c - 如何在 LINUX (Ubuntu) 上用 C 语言实现 TCP SO_KEEPALIVE

转载 作者:可可西里 更新时间:2023-11-01 02:37:26 25 4
gpt4 key购买 nike

我正在尝试实现 TCP SO_KEEPALIVE 以在保持事件消息未收到响应时关闭并重新连接我的连接。我的问题是我对此没有任何运气,我认为(希望)这是因为我没有正确实现它。下面是我如何实现它的示例。

//var to re-set socket's timeout value
struct timeval timeout;

//creates a variable for KEEPALIVE's optval parm
int optval;

//creates a variable for KEEPALIVE's optlen parm
socklen_t optlen = sizeof(optval);

// sets KEEPALIVE parms
optval = 1;
optlen = sizeof(optval);

// turns on KEEPALIVE property on socket
if (setsockopt (Socket, SOL_SOCKET, SO_KEEPALIVE, &optval, optlen) < 0)
{
CloseSocket(Socket, 0);
connect(Socket);

}

最佳答案

您的代码仅显示您设置套接字选项然后立即关闭并重新打开它。设置套接字选项不会告诉您保活失败。您将通过检查套接字(通过读取、写入、轮询/选择等)得到它。设置选项只会打开保持事件发送和检查。寻找 ETIMEDOUT 作为 errno。

关于c - 如何在 LINUX (Ubuntu) 上用 C 语言实现 TCP SO_KEEPALIVE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14585996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com