gpt4 book ai didi

c++ - 带有 MSG_PEEK 的 C 'recv' 不返回 -1

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:26 26 4
gpt4 key购买 nike

我正在编写一个 C 函数来检查来自客户端的套接字连接是否可用。我将“recv”函数与 MSG_PEEK 一起使用,不改变输入缓冲区。

但是,当套接字连接被客户端关闭时,'recv' 应该返回 -1,但实际上并没有。客户端关闭后,下面函数中的'recv'一直返回0。

char is_avail(int connection) {
char buffer;

int result = recv(connection,&buffer,1,MSG_PEEK);
if (result<0)
return 0;
else
return 1;
}

这件事有什么原因吗?我还想将 MSG_PEEK 与 MSG_WAITALL 结合使用。我试过:

recv(connection,&buffer,1,MSG_PEEK|MSG_WAITALL);

但是没有生效。

最佳答案

当套接字正确关闭时,recv 不会返回 -1,而是返回“0”。

0 -> 套接字的优雅关闭

-1->实际发生错误

> 0-> 数据已读取。

关于c++ - 带有 MSG_PEEK 的 C 'recv' 不返回 -1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12050267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com