Epoll实验总结
来源:互联网 发布:图书管理系统c语言链表 编辑:程序博客网 时间:2024/05/21 06:36
Epoll实验总结
2012-09-06 15:54:10| 分类: network_program | 标签:epoll c |举报 |字号 订阅
一、超时实验
建立一个阻塞模式的tcp连接到一个没有监听的服务端口(肯定连不上,然后等待超时),然后将这个socket描述符,交由epoll管理。注册的epoll事件为
event = EPOLLIN | EPOLLOUT | EPOLLRDHUP | EPOLLERR | EPOLLET |
EPOLLPRI | EPOLLHUP
结果:当tcp连接超时的时候,触发的事件有EPOLLIN 、 EPOLLOUT 、EPOLLRDHUP 、 EPOLLERR、EPOLLHUP,也就是只有紧急数据的事件没有发生。
二、调用read(),返回0时,继续write()
建立一个阻塞模式的tcp连接到有监听的服务器端口上,然后将这个socket描述符,交由epoll管理。注册的epoll事件为
event = EPOLLIN | EPOLLOUT | EPOLLRDHUP | EPOLLERR | EPOLLET |
EPOLLPRI | EPOLLHUP
当该描述符可写时,写10字节的数据到服务端;当该描述符可读时,读10字节的数据;服务端读10字节的数据,然后休眠5秒,之后close连接。
实验结果,总结如下:
1, tcp三次握手一旦完成,该socket描述符的EPOLLOUT触发,即可写
2, 服务端休眠5秒后,关闭连接。触发的事件有EPOLLIN 、 EPOLLOUT 、EPOLLRDHUP 、 EPOLLERR、EPOLLHUP。此时read返回0,write仍然可写
3, 之后又触发了EPOLLIN 、 EPOLLOUT事件。此时read仍然返回0,write出错,错误为SIGPIPE。这次触发的原因是,在2中的write了一个closed的连接,由于非阻塞,造成write成功的假象,所以这儿epoll又接到了通知,弥补上一步的错误。
三、调用read,返回0,不再write
建立一个阻塞模式的tcp连接到有监听的服务器端口上,然后将这个socket描述符,交由epoll管理。注册的epoll事件为
event = EPOLLIN | EPOLLOUT | EPOLLRDHUP | EPOLLERR | EPOLLET |
EPOLLPRI | EPOLLHUP
当read返回0后,不再write数据到服务端;服务端读10字节的数据,然后休眠5秒,之后close连接。
实验结果:
1, tcp三次握手一旦完成,该socket描述符的EPOLLOUT触发,即可写
2, 触发EPOLLIN 、 EPOLLOUT 、EPOLLRDHUP 、 EPOLLERR、EPOLLHUP。此时read返回0。之后不再有事件触发
四、在ET模式下,只需注册EPOLLIN | EPOLLOUT就可以了,如果有错误发生,这两个事件也被能触发,然后判断错误类型就可以了
- Epoll实验总结
- epoll总结
- epoll总结
- epoll总结
- epoll总结
- EPOLL使用总结
- EPOLL使用总结
- select,poll,epoll总结
- Epoll学习总结
- epoll使用及总结
- Epoll归纳总结
- epoll()函数总结
- epoll特点总结
- 对epoll总结
- 多路复用epoll()总结
- select、poll、epoll总结
- epoll基础总结
- epoll总结 一
- 关于mysql_query()的注意点
- iOS开发—调用第三方地图导航
- Python简单递归
- 全面理解Java内存模型(JMM)及volatile关键字
- 增强绝缘类高集电极电压晶体管耦合器:TLP188
- Epoll实验总结
- Python 各种运行错误(如:SyntaxError :invalid syntax)
- 查找两个字符串a,b中的最长公共子串
- I/O 模型
- php版本差异
- Socket通信——TCP三次握手、数据通信、四次关闭
- 1Mbps高速光耦合器TLP112A工作原理及应用实例说明
- c#之委托
- Linux epoll 详解