1.初始化fd_set
tuple<fd_set, fd_set, fd_set> InitFdset(SOCKET _sock)
{
tuple<fd_set, fd_set, fd_set> fds;
fd_set rfd = {}, wfd = {}, efd = {};
FD_ZERO(&rfd);
FD_ZERO(&wfd);
FD_ZERO(&efd);
FD_SET(_sock, &rfd);
FD_SET(_sock, &wfd);
FD_SET(_sock, &efd);
fds = make_tuple(rfd, wfd, efd);
return fds;
}
2.调用select查找有效socket并处理
timeval t = {0,0};
int ret = select(_sock + 1, &rfd, &wfd, &efd, &t);//最后参数NULL为阻塞模式
3.判断可读socket,保存连接
if (FD_ISSET(_sock, &rfd))
{
FD_CLR(_sock, &rfd);
sockaddr_in cAddr = {};
int len = sizeof(sockaddr_in);
SOCKET c = INVALID_SOCKET;
c = accept(_sock, (s

本文介绍了在Windows网络编程中如何使用select函数,包括初始化fd_set,通过select查找有效socket进行处理,判断并保存可读socket,以及详细处理单个socket数据的步骤。测试结果显示该方法有效。
订阅专栏 解锁全文
290

被折叠的 条评论
为什么被折叠?



