免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6957 | 回复: 14
打印 上一主题 下一主题

epoll 中的鸡肋 ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-11 14:05 |只看该作者 |倒序浏览
epoll 使用EPOLLHUP 无法监测对方异常掉线
各位大虾好:  
  
在网上看到epoll 例子千篇一律, 检测的事件基本都是EPOLLIN  EPOLLOUT   这两个例子相对来说好测一点

但是这几个参数事件我却无法检测,当然和我的知识面有关。希望了解的大虾给予指点:

EPOLLPRI:表示对应的文件描述符有紧急的数据可读(这里应该表示有带外数据到来);
EPOLLERR:表示对应的文件描述符发生错误;
EPOLLHUP:表示对应的文件描述符被挂断;

上面几个参数的怎么测,EPOLLPRI:我的理解是一些ACK, FIN之类的东西 ,但是如何接收,recv 接收吗, 我从来都没有检测到这个事件
  EPOLLERR:(表示对应的文件描述符发生错误)是指什么情况,怎么检测这种情况
  EPOLLHUP:(表示对应的文件描述符被挂断)是指网络断开吗 ,我在程序运行过程中把网线拔掉,但却检测不到这个事件。

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
2 [报告]
发表于 2009-03-11 14:35 |只看该作者
目前我也只用过EPOLLIN。

EPOLLPRI,如果是带外数据的话。
发送与接收要设置MSG_OOB。
我马上要测试这个。

论坛徽章:
0
3 [报告]
发表于 2009-03-11 15:02 |只看该作者
好像在kernel 2.6.17里提供了一个新的标识符EPOLLRDHUP 可以解决这类问题

请楼主google一下~

呵呵



[ 本帖最后由 lenky0401 于 2009-3-11 15:03 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-03-11 15:04 |只看该作者
2楼的测试了后给说说 非常谢谢

论坛徽章:
0
5 [报告]
发表于 2009-03-11 17:38 |只看该作者

回复 #2 yangsf5 的帖子

测得怎么样了  , 之前做了
int i = 1;
setsockopt(socketfd, SOL_SOCKET, SO_OOBINLINE, &i, sizeof(int) );
接收也设置MSG_OOB了。可是返回-1 。
不是为何?

EPOLLERR:表示对应的文件描述符发生错误; 这个测试了 ,客户端非法关闭可能会引起这个
等待 :EPOLLHUP; EPOLLPRI ;

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
6 [报告]
发表于 2009-03-11 20:18 |只看该作者

回复 #5 liujq110 的帖子

还没测EPOLLPRI

注册EPOLLIN、EPOLLET、EPOLLRDHUP、EPOLLERR、EPOLLHUP。
当程序里close(fd)、
ctr+c进程都是触发EPOLLRDHUP。

拔网线不能检测到。

测试的代码写的不够充分,明天继续。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2009-03-11 21:15 |只看该作者
楼主都不懂什么是带外数据,就好意思说人家是“鸡肋”。

论坛徽章:
0
8 [报告]
发表于 2009-03-11 21:58 |只看该作者

回复 #7 flw 的帖子

epoll 中的鸡肋 ?   呵呵 我是疑惑 ,麻烦这位朋友给指点一二,谢谢!

论坛徽章:
1
天蝎座
日期:2013-08-25 10:27:22
9 [报告]
发表于 2009-03-12 16:42 |只看该作者

回复 #5 liujq110 的帖子

测好了。
EPOLLPRI确实是带外数据的事件 。

你的出错是因为你设置了SO_OOBINLINE,再用MSG_OOB来recv的。
设置了SO_OOBINLINE之后,带外数据就留在通常的接收缓冲区了。
这是就要通过sockatmark来判断带外标记了。

论坛徽章:
0
10 [报告]
发表于 2009-03-12 21:18 |只看该作者

回复 #9 yangsf5 的帖子

非常感谢 我再试试!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP