2017-09-16 102 views
-3

我正在使用以下客户端代码。成功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) 
+0

我投票关闭这一问题作为题外话,因为它表现出零的研究。 – EJP

回答

0

recv()返回零如果连接已经由对等封闭,或-1与errno设置连接是否遇到错误。

这是记录在案。

你不关心其他的连接。

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

相关问题