随笔分类 - IO
摘要:目录LT 水平模式(默认模式)示例代码(buf较小,一次无法接收所有数据)ET 边沿模式ET模式设置如何处理每次接收只通知一次呢将接收函数写到一个循环之中 非阻塞模式如果发送端发送的数据有上限,那么接收端只要指定一个更大的buff就可以了示例代码 LT 水平模式(默认模式) 水平模式可以简称为LT模
阅读全文
摘要:目录概述操作函数createctlwait示例代码 概述 epoll 全称 eventpoll,是 linux 内核实现IO多路转接/复用(IO multiplexing)的一个实现。 IO多路转接的意思是在一个操作里同时监听多个输入输出源,在其中一个或多个输入输出源可用的时候返回, 然后对其的进行
阅读全文
摘要:目录单纯select的问题解决方法建立子线程的位置多线程的共享资源代码 单纯select的问题 之前的代码中,建立连接和接收数据是线性执行的关系,也就是说,建立连接时不能接收,接收时不能建立连接,所以效率仍然不够高 解决方法 主线程中一直执行select函数,检测文件描述符的状态,让子线程去进行通信
阅读全文
摘要:目录处理流程服务端代码 处理流程 创建监听的套接字 lfd = socket(); 将监听的套接字和本地的IP和端口绑定 bind() 给监听的套接字设置监听 listen() 创建一个文件描述符集合 fd_set,用于存储需要检测读事件的所有的文件描述符 通过 FD_ZERO() 初始化 通过 F
阅读全文
摘要:目录select函数原型细节fdsetfdset操作函数 select函数原型 使用select这种IO多路转接方式需要调用一个同名函数select,这个函数是跨平台的,Linux、Mac、Windows都是支持的。程序猿通过调用这个函数可以委托内核帮助我们检测若干个文件描述符的状态,其实就是检测这
阅读全文
摘要:目录作用方式selectpollepoll过程 作用 处理服务器的并发 IO多路转接也称为IO多路复用,它是一种网络通信的手段(机制),通过这种方式可以同时监测多个文件描述符并且这个过程是阻塞的,一旦检测到有文件描述符就绪( 可以读数据或者可以写数据)程序的阻塞就会被解除,之后就可以基于这些(一个或
阅读全文