客户端如何知道服务器已关闭其套接字
问题描述:
我正在使用以下客户端代码。成功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)
答
recv()
返回零如果此连接已经由对等封闭,或-1与errno
设置连接是否遇到错误。
这是记录在案。
你不关心其他的连接。
你也可以考虑添加错误检查你的代码的其余部分。这些系统调用中的每一个都可能遇到错误。
我投票关闭这一问题作为题外话,因为它表现出零的研究。 – EJP