首页 文章

是否可以检查非阻塞套接字是否已关闭?

提问于
浏览
0

我想在尝试读取套接字之前检查套接字是否仍处于活动状态,但似乎recv()和read()将返回0,无论如何 . 根据手册页:

当流套接字对等体执行了有序关闭时,返回值将为0(传统的“文件结束”返回) .

但是也:

如果从流套接字接收的请求字节数为0,也可以返回值0 .

我如何区分这两种情况?如果那是不可能的,还有其他方法可以告诉套接字是否已关闭/关闭?

1 回答

  • 2

    使用非零 lengthMSG_PEEK 标志调用 recv() . 然后检查返回值是否为 0 . 使用 MSG_PEEK 将阻止它消耗任何数据 - 下一个 recv() 将再次读取它 .

相关问题