我想在尝试读取套接字之前检查套接字是否仍处于活动状态,但似乎recv()和read()将返回0,无论如何 . 根据手册页:
当流套接字对等体执行了有序关闭时,返回值将为0(传统的“文件结束”返回) .
但是也:
如果从流套接字接收的请求字节数为0,也可以返回值0 .
我如何区分这两种情况?如果那是不可能的,还有其他方法可以告诉套接字是否已关闭/关闭?
使用非零 length 和 MSG_PEEK 标志调用 recv() . 然后检查返回值是否为 0 . 使用 MSG_PEEK 将阻止它消耗任何数据 - 下一个 recv() 将再次读取它 .
length
MSG_PEEK
recv()
0
1 回答
使用非零
length
和MSG_PEEK
标志调用recv()
. 然后检查返回值是否为0
. 使用MSG_PEEK
将阻止它消耗任何数据 - 下一个recv()
将再次读取它 .