[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
其他
> 详细
I/O复用
时间:
2014-01-19 15:54:57
阅读:
414
评论:
0
收藏:
0
[点我收藏+]
I/O复用的场合:
1 客户处理多个描述字时
2 客户处理多个套接口
3 服务器处理监听套接口,又要处理已连接套接口
4 既处理TCP,又处理UDP
5 处理多个服务或者多个协议
套接口上的输入操作:
1 数据到达网络,分组到达时,被拷贝到内核的某个缓冲区
2 将数据从内核缓冲区拷贝到应用缓冲区
非阻塞模型
,应用进程连续不断的查询内核,看看某操作是否准备好。这对CPU时间是极大的浪费。
I/O复用,调用select或pool,调用某一个阻塞
通过系统调用sigaction安装信号处理程序,当数据准备好时,就生成一个SIGIO信号,调用recvfrom读取数据报
异步IO模型
:
调用函数aio_read传递给内核相关信息,内核数据拷贝完成后,返回信号
select()函数:
允许进程指示内核等待多个事件中的任一个发生,并仅在一个或多个时间发生或经过某指定的事件后才唤醒进程。
套接口准备读:
1 接收缓冲区中的数据字节数大于等于套接口接收缓冲区低潮限度的当前值
2 连接的读这一半关闭
3 套接口是一个监听套接口且已完成的连接数为非0
4 有一个套接口错误待处理
套接口准备写:
1 发送缓冲区中的可用字节数大于等于套接口发送缓冲区低潮限度的当前值,且或 套接口已连接,套接口不要求连接
2 连接的写这一半关闭
3 有一个套接口错误待处理
接收和发送低潮限度的目的:
在select返回之前,应用进程知道有多少出具可读或有多大的空间可用于写
使用shutdown相对于cloose的好处:
1 close将描述字的计数减1,在此计数为0时才关闭套接口。用shutdown激发TCP正常连接终止序列,不管访问计数
2 close终止了数据传送两个方向:读和写。
使用shutdown半关闭连接:
int
shutdown(
int
sockfd,
int
howto);
howto类型:
1 SHUT_RD 关闭连接读的这一半,不再接受数据,现有的都作废。
2 SHUT_WR 关闭连接的写的这一半,当前缓冲区的数据都被发送,后跟正常的TCP终止序列。
3 SHUT_RDWR 连接的读这一半,和写这一半都关闭。相当于两次shutdown
拒绝服务型攻击:
当一个服务器整处理多个客户时,服务器不能阻塞于单个客户相关的函数调用。如果这样,服务器将悬挂并拒绝为所有其他的客户提供服务。
I/O复用
原文:http://www.cnblogs.com/xing901022/p/3525831.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!