美文网首页
网络IO模型-Select

网络IO模型-Select

作者: 秋冬不寒 | 来源:发表于2023-04-14 22:55 被阅读0次

使用select函数实现IO管理。通过select函数判断套接字是否存在数据、可以写入数据,可以等待多个套接字。
定义:


/* According to POSIX.1-2001 */
#include <sys/select.h>

/* According to earlier standards */
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

int select(int nfds, fd_set *readfds, fd_set *writefds,
           fd_set *exceptfds, struct timeval *timeout);

void FD_CLR(int fd, fd_set *set);
int  FD_ISSET(int fd, fd_set *set);
void FD_SET(int fd, fd_set *set);
void FD_ZERO(fd_set *set);


select函数:

int select(
     int nfds,  //集合中所有文件描述符的范围,即所有文件描述符的最大值+1。windows中不需要
     fd_set *readfds,  //检查可读性集合
     fd_set *writefds, //检查可写性集合
     fd_set *exceptfds, //例外数据集合
     struct timeval *timeout); //函数返回时间

返回值:

成功时:返回三中描述符集合中”准备好了“的文件描述符数量。
超时:   返回0
错误:   返回-1,并设置 errno

对fd_set的操作

void FD_CLR(int fd, fd_set *set);//清除某一个被监视的文件描述符。
int  FD_ISSET(int fd, fd_set *set);//测试一个文件描述符是否是集合中的一员
void FD_SET(int fd, fd_set *set);//添加一个文件描述符,将set中的某一位设置成1;
void FD_ZERO(fd_set *set);//清空集合中的文件描述符,将每一位都设置为0;

相关文章

  • Epoll 模型简介

    网络IO的模型中,之前介绍了select模型。select 确实是一个简明好用的模型。可是现在的服务器却越来越少采...

  • select,poll,epoll

    简单概述 select,poll,epoll都是用来实现IO多路复用的机制,在Linux网络模型中对应着IO复用模...

  • 1.Nette入门第一章——IO演进

    1. IO 基础 1.1. linux网络IO模型 阻塞IO模型 非阻塞IO模型 IO多路复用模型(NIO) 信...

  • netty学习主目录

    学习基础 四种io模型(同步阻塞io,同步非阻塞io,io多路复用(select/poll,epoll),异步io...

  • Netty浅析

    IO模型 IO多路复用模式:Reactor、Proactor NIO实现的是Reactor模式。通过select、...

  • 网络IO模型

    网络IO的模型大致包括下面几种 同步模型(synchronous IO)阻塞IO(bloking IO)非阻塞IO...

  • linux网络编程系列(十一)--select基本使用以及它和e

    1. select函数 复用IO还有一种就是select模型,我们下面就来简单介绍一下select用法。 1.1 ...

  • 【Netty开发指南】搭稳Netty开发的地基

    Linux网络编程5种IO模型 根据UNIX网络编程对于IO模型的分类,UNIX提供了5种IO模型,分别是 阻塞I...

  • linux select/epoll

    一、Unix/Linux网络IO模型在经典的Unix网络编程中,总结出了5种不同的网络IO模型,分别是阻塞式IO,...

  • IO多路复用

    参考资料:[1]. 聊聊Linux 五种IO模型[2]. 聊聊IO多路复用之select、poll、epoll详解...

网友评论

      本文标题:网络IO模型-Select

      本文链接:https://www.haomeiwen.com/subject/svftjdtx.html