我正在实现一个服务器,我在其中监听客户端使用接受套接字调用进行连接。
在接受发生并且我收到套接字后,我等待大约 10-15 秒,然后再进行第一次接收/发送调用。
发送到客户端的调用失败,errno = 32 即管道损坏。
因为我不控制客户端,所以我在接受的套接字中设置了套接字选项 *SO_KEEPALIVE*。
const int keepAlive = 1;
acceptsock = accept(sock, (struct sockaddr*)&client_addr, &client_addr_length)
if (setsockopt( acceptsock, SOL_SOCKET, SO_KEEPALIVE, &keepAlive, sizeof(keepAlive)) < 0 )
{
print(" SO_KEEPALIVE fails");
}
谁能告诉这里可能出了什么问题,我们如何防止客户端套接字关闭?
注意 我想在这里添加的一件事是,如果在接受和发送/接收调用之间没有时间间隔或少于 5 秒,则客户端服务器通信按预期进行。