在未能发送数据后关闭套接字不会导致recv函数返回错误状态

时间:2014-11-24 19:50:22

标签: c linux sockets

我想知道为什么使用标准socket功能关闭close而没有事先调用shutdown函数后由于不可用的对等方而无法发送数据不会导致要返回同一recv的{​​{1}}函数?

伪代码:

socket

1 个答案:

答案 0 :(得分:2)

正确。它会导致recv()流结束状态退出。

您的代码永远不会检查返回值,因此它永远不会检测到它为零。您需要将结果存储到变量中;检查-1表示错误;检查它是否为零,表示流的结束;否则将其用作返回数据的长度。