2009-11-08 39 views
0

我有以下代码:接近()与关断()用的recv()

客户端:

n=recv(sock,buf,1200,NULL); 

服务器端:

shutdown(sockk,SD_BOTH); 

的问题是,在客户端recv返回0,意味着正常关机。我需要它返回-1(我不能更改客户端,我需要适应我的代码。)

我该怎么做才能使它返回-1?

+0

为什么它应该返回-1?这是一个优雅的关机。 如果你不想正常关机,不要使用'shutdown()' – Hasturkun 2009-11-08 12:17:46

回答

0

不要从服务器调用shutdown()或close(),然后可以向客户端进程发送一些信号。因此,recv()调用将返回-1,并将errno与EINTR一起设置。希望这可以帮助。

但我建议你不应该采用这样的编码习惯。 recv()可以返回0,+ ve数字和-1。它很好地处理所有这些情况。

2

我想通了。 使用SO_LINGER设置我的套接字并导致异常关机,现在它在shutdown()后返回-1。 谢谢