【问题标题】:how do a client knows that the server closed its socket客户端如何知道服务器关闭了它的套接字
【发布时间】:2017-09-16 09:08:55
【问题描述】:

我正在使用以下客户端代码。成功连接()后,如果服务器关闭所有连接,我的客户端如何知道此服务器关闭?有没有办法从客户端代码中监听这种事件?

int sfd = socket(PF_INET, SOCK_STREAM, tcp->p_proto);

struct sockaddr_in isa = getipa("localhost", 1025);

connect(sfd, (struct sockaddr*)&isa, sizeof isa);

ssize_t size = recv(sfd, (void*)buff, sizeof buff, MSG_WAITALL);

puts(buff);

printf("Enter message to send\n");
scanf("%s",sendMsg);
send(sfd, (void*) sendMsg, 255, MSG_NOSIGNAL)

【问题讨论】:

  • 我投票决定将此问题作为离题结束,因为它展示了零研究。

标签: sockets networking network-programming


【解决方案1】:

recv() 如果 连接已被对等方关闭,则返回零,如果连接遇到错误,则返回 -1 并设置 errno。

这是记录在案的。

你不关心其他连接。

您还可以考虑在其余代码中添加错误检查。这些系统调用中的每一个都可能遇到错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2015-04-07
    相关资源
    最近更新 更多