C ++如何使用select查看套接字是否已

有人可以给我提供一个示例,说明如何使用select()查看客户端是否已关闭套接字上的连接吗?

仅供参考。我正在使用linux。

谢谢!

回答:

下面的代码段首先检查套接字是否标记为可读(关闭时为已标记),然后检查是否确实有要读取的内容。

#include <sys/time.h>

#include <sys/types.h>

#include <unistd.h>

#include <sys/ioctl.h>

bool isclosed(int sock) {

fd_set rfd;

FD_ZERO(&rfd);

FD_SET(sock, &rfd);

timeval tv = { 0 };

select(sock+1, &rfd, 0, 0, &tv);

if (!FD_ISSET(sock, &rfd))

return false;

int n = 0;

ioctl(sock, FIONREAD, &n);

return n == 0;

}

以上是 C ++如何使用select查看套接字是否已 的全部内容, 来源链接: utcz.com/qa/401863.html

回到顶部