关机后Winsock recv无法正常工作

时间:2012-03-23 20:33:45

标签: c++ windows sockets winsock

我正在努力让一个简单的winsock程序工作,所以 我创建我的套接字并发送我的数据就好了。然后我使用shutdown(ConnectSocket, SD_SEND)根据msdn,禁用发送数据,但不接收? msdn上的例子也是这样做的。

但是在我调用shutdown后,我的recv函数返回0而没有收到任何数据 如果我注释掉关闭代码,一切都会正常工作。

我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

不,那是正常的。另一方通过关闭来响应您的关机。从recv返回零表示正常连接关闭。如果您不希望对方关闭其一半连接,请不要关闭您的连接。

(当对recv的调用返回零时,您希望对方做什么?)

答案 1 :(得分:-3)

如果是HTTP协议,请使用连接标头关闭连接或保持打开状态:

连接:关闭

在这种情况下,您无需关闭发送

连接:保持活力

接收将循环而不关闭连接的发送部分