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()