UNP读书笔记 第16章 非阻塞式I/O

非阻塞式I/O
在这里插入图片描述
1.非阻塞读和写:str_cli函数
①把描述符设置为非阻塞②初始化缓冲区指针③主循环:准备调用select④指定关注的描述符⑤调用select ⑥从标准输入read⑦处理非阻塞错误⑧read返回EOF⑨read返回数据

2.非阻塞式connect
当在一个非阻塞的TCP套接字上调用connect时,connect立即返回一个错误,不过已经发生的TCP三次握手继续进行。
非阻塞的connect有三个用途:
①我们可以把三次握手叠加到其他处理上
②我们可以使用这个技术同时建立多个连接
③既然select等待连接的简历,我们可以给select指定一个时间限制,使我们能够缩短select的超时。

3.非阻塞connect:时间获取客户程序
设置套接字为非阻塞,调用fcntl把套接字设置为非阻塞
在其他处理上迭合连接建立
检查连接是否即建立,如果非阻塞返回0,说明建立
调用select
处理超时,如果select返回0说明超时发生,于是我们返回ETIMEOUT给调用者。我们还要关闭套接字,防止三次握手继续下去。
检查可读或可写条件
关闭非阻塞状态并返回
被中断的connect

4.非阻塞connect:Web客户程序
定义file结构
定义全局变量和函数原型
处理命令参数
读取主页
初始化全局变量
建立与服务器的连接
发送HTTP命令道服务器,读取应答
创建套接字,设置为非阻塞
发起非阻塞
处理连接建立完成情况
构造命令并发送
设置标志
可能的话发起另一个连接
select:等待事件发生
处理所有就绪的描述符
检查描述符是否有数据
同时连接的性能

5.非阻塞accept

小结
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值