close()与shutdown()与recv()的比较
我有以下代码: 客户端:close()与shutdown()与recv()的比较,c,sockets,winsock,C,Sockets,Winsock,我有以下代码: 客户端: n=recv(sock,buf,1200,NULL); 服务器端: shutdown(sockk,SD_BOTH); 问题是,客户端recv返回0,这意味着正常关机。我需要它返回-1(我不能更改客户端,我需要使我的代码适应它。) 如何使其返回-1?不要从服务器调用shutdown()或close(),然后可以向客户端进程发送一些信号。因此recv()调用将返回-1,并使用EINTR设置errno。希望这有帮助 但我建议您不要采用这种编码实践。recv()可以返回0、
n=recv(sock,buf,1200,NULL);
服务器端:
shutdown(sockk,SD_BOTH);
问题是,客户端recv
返回0,这意味着正常关机。我需要它返回-1(我不能更改客户端,我需要使我的代码适应它。)
如何使其返回-1?不要从服务器调用shutdown()或close(),然后可以向客户端进程发送一些信号。因此recv()调用将返回-1,并使用EINTR设置errno。希望这有帮助
但我建议您不要采用这种编码实践。recv()可以返回0、+ve数字和-1。处理所有这些案件都很好 我明白了。
将套接字设置为以便延迟
,从而导致中止关机。
现在它在
shutdown()
之后返回-1
,为什么要返回-1?这是一次优雅的关机。如果不希望正常关机,请不要使用shutdown()