首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么让非ET模式的epoll事件变成不再激活状态

2012-06-15 
如何让非ET模式的epoll事件变成不再激活状态网络编程,非阻塞模式,epoll非ET模式调用epoll_wait接收数据客

如何让非ET模式的epoll事件变成不再激活状态
网络编程,非阻塞模式,epoll非ET模式
调用epoll_wait接收数据
客户端发一次数据"Hello, World"然后立刻关闭
服务器接收到客户端发送的Hello, World,打印

正常情况下应该只触发EPOLLIN然后打印一次
但是现在epoll_wait却一直触发EPOLLIN事件,我明明已经调用过recv,应该不会再有事件激活了啊。

求问各位大大:
1.该怎么办,让epoll_wait停止触发EPOLLIN事件
2.客户端Sock绑定的是EPOLLIN|EPOLLHUP,断线后会触发EPOLLHUP吗?

[解决办法]
因为客户端关闭,服务端read始终返回0并且可读,一旦read==0就应该close(fd);然后从epoll中remove掉这个fd.
[解决办法]

探讨

引用:

因为客户端关闭,服务端read始终返回0并且可读,一旦read==0就应该close(fd);然后从epoll中remove掉这个fd.


哦对,谢谢了,我试了一下,原来如果socket连接中的话若无数据返回的是-1,错误码是EAGAIN。

请问 EPOLLHUP 会不会在客户端掉线的时候激活呢?

热点排行