epoll ET mode with tcp nonblocking socket
来源:互联网 发布:网络应急协调中心笔试 编辑:程序博客网 时间:2024/05/21 08:41
epoll ET mode with tcp nonblocking socket(linux kernel 2.6.18)
[b]现假设A, B建立了tcp连接,且A可写[/b]
1) 2.6.18并未实现真正意义上的 edge triggered, 事件会报多次,比如socket可写,这时tcp接收到有5bytes,触发EPOLLIN | EPOLLOUT,不管应用层是否read()掉这5bytes,然后又接收到10bytes又会触发EPOLLIN | EPOLLOUT;也就是只要触发一个事件其它满足条件的事件还是会返回即使以前报告过。感觉内核是根据这个socket的状态取的这些事件
2) epoll_ctl(, EPOLL_CTL_ADD, ,)会去检查对应socket的状态,如果需要监视的某个event已经满足返回的条件,则第一次调用epoll_wait会返回该event
3) A shutdown(, SHUT_RD)不会给B发送任何tcp报文,这之后B再write()过来A也不会给B发送RST或则其它断开连接的报文,B 的epoll_wait不会返回任何事件;
4) A shutdown(, SHUT_RD)后,A的epoll_wait()立即返回EPOLLIN EPOLLOUT EPOLLRDHUP,A还可以继续read()该socket,有数据则读出,否则read()返回0
5) A shutdown(, SHUT_WR),则向B发送FIN报文,导致B的epoll_wait()返回:EPOLLIN | EPOLLOUT | EPOLLRDHUP,这之后如果A再close()该socket,B不会触发任何事件
6) A close()该socket,如果A 的tcp接收缓冲区还有数据,则向B发送RST报文,导致B的epoll_wait()返回:EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLRDHUP
7) A close()该socket,如果A 的tcp缓冲区没有数据,则向B发送FIN报文,导致B的epoll_wait()返回:EPOLLIN | EPOLLOUT | EPOLLRDHUP
8) B shutdown(, SHUT_WR)如果B的缓冲区还有数据,则B 的epoll_wait()马上返回EPOLLIN,如果无数据则不返回。
9) B shutdown(, SHUT_RD)导致B 的epoll_wait()马上返回EPOLLIN EPOLLOUT EPOLLRDHUP而不管B的tcp缓冲区中是否有数据。
10) B shutdown(, SHUT_RD | WR)如果B的缓冲区还有数据,则B 的epoll_wait()马上返回EPOLLIN,如果无数据则不返回。
11) tcp连接关闭(A和B均用shutdown(, WR))导致epoll_wait返回EPOLLIN EPOLLHUP EPOLLRDHUP
[[i] 本帖最后由 学与思 于 2010-1-22 17:04 编辑 [/i]]
- epoll ET mode with tcp nonblocking socket
- socket——tcp-nonblocking-server-client
- Socket overlapped I/O versus blocking/nonblocking mode
- Python: 使用select函数编写nonblocking TCP/IP socket程序
- epoll et
- epoll lt 和 et
- epoll LT VS ET
- epoll ET模式 注意事项
- epoll et lt
- 经典python epoll(ET)
- epoll/et例子
- epoll et lt
- epoll et模式
- (转) 使用epoll的ET模式下的tcp服务处理特点
- Epoll的ET模式下对TCP的Connect的处理
- 非阻塞socket与epoll的ET模式结合使用注意事项
- 非阻塞socket与epoll的ET模式结合使用注意事项
- 2.7 Socket programming with TCP
- BSP包的克隆
- 安装DM355工具链,网友整理,比较完整
- CTRL+C不能终止程序运行
- MySQL索引
- 比较官方iPhone SDK和开源工具链
- epoll ET mode with tcp nonblocking socket
- Attribute value ("XXX") is quoted with " which must be escaped when used within the value 异常的修正
- 队友揭秘小贝更衣室落泪 有望效仿卡纳瓦罗参加世界杯
- 用一表更新或删除另一表
- vc++中文件路径写法
- tomcat-users.xml
- Java标示符、关键字
- include/global.h
- 记者维权