我有以下代码:
客户方:
n=recv(sock,buf,1200,NULL);
服务器端:
shutdown(sockk,SD_BOTH);
问题是,客户端recv
返回0,表示正常关闭。我需要它返回-1(我不能改变客户端,我需要调整我的代码。)
我该怎么做才能让它返回-1?
答案 0 :(得分:2)
我明白了。
使用SO_LINGER
设置套接字,从而导致中断关闭。
现在它在-1
之后返回shutdown()
。
答案 1 :(得分:0)
不要从服务器调用shutdown()或close(),然后您可以向客户端进程发送一些信号。所以recv()调用将返回-1,并使用EINTR设置errno。希望这可以帮助。
但我建议你不要采用这种编码方式。 recv()可以返回0,+ ve数和-1。它很好地处理所有这些情况。