客户端如何知道服务器关闭了它的套接字

时间:2017-09-16 09:08:55

标签: sockets networking network-programming

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

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)

1 个答案:

答案 0 :(得分:0)

如果连接已被对等方关闭,则

recv()返回零;如果连接遇到错误,则返回-1 errno设置。

记录在案。

您不关心其他连接。

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