close()与shutdown()与recv()

时间:2009-11-08 12:05:02

标签: c sockets winsock

我有以下代码:

客户方:

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

服务器端:

shutdown(sockk,SD_BOTH);

问题是,客户端recv返回0,表示正常关闭。我需要它返回-1(我不能改变客户端,我需要调整我的代码。)

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

2 个答案:

答案 0 :(得分:2)

我明白了。 使用SO_LINGER设置套接字,从而导致中断关闭。 现在它在-1之后返回shutdown()

答案 1 :(得分:0)

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

但我建议你不要采用这种编码方式。 recv()可以返回0,+ ve数和-1。它很好地处理所有这些情况。