ChinaUnix.net
相关文章推荐:

epollout 长连接

发现以前有人在别的地方问过类似的问题,但是没人解答: “Linux下的I/O复用epoll,我一直对这个epollout事件有一些疑问 当我们调用epoll_wait函数返回时,我们应该可以获得一个就绪事件的列表,然后我们可以遍历这个列表,然后查看每一个就绪的文件描述符上发生的事件,然后针对不同的时间进行操作。 对于常用的EPOLLIN,EPOLLRDHUP我都理解,例如 在发生EPOLLIN的时候,如果是监听socket上,那么我们调用accept来接受新连接 ...

by fufelixzh - C/C++ - 2014-11-24 17:32:29 阅读(2726) 回复(11)

相关讨论

epoll循环如下: while (1) { nfds = epoll_wait(kdpfd, events, curfds, -1); if (nfds == -1) { perror("epoll_wait"); break; } else { fprintf(stderr, "===>nfds is: %d\n", nfds); } for (n = 0; n < nfds; ++n) { if (events[n].events & EPOLLIN) { if (events[n].data.fd == listener) { fprintf(stderr, "^^^in event: new client[%d]\n", eve...

by redac - C/C++ - 2009-02-04 11:31:32 阅读(3599) 回复(3)

大家国庆快乐! 我正在做一个IM系统,用TCP连接,server使用epoll,因为不能确定client什么时候发消息以及什么时候收到消息,所以需要同时监控EPOLLIN和epollout,我在论坛上也没有找到同时使用这两者的例子,这两者如果要一起使用,该怎么使用呢? 感谢先!如果有段代码最好^^

by larkinboy - C/C++ - 2010-10-08 00:06:26 阅读(8107) 回复(8)

目的是想不断的想一个sock写数据,用LT模式,epollout会被触发,但换成ET就挂在哪了。我的理解是对端已经接收了我发过去的数据,写操作的状态应该是有改变啊。但为什么没触发写操作呢?以前没接触过epoll的,请那位帮帮忙。

by cskyrain - C/C++ - 2010-01-11 16:03:38 阅读(6430) 回复(6)

hi,all 最近在开发一个网络游戏服务器,使用epoll的ET模式。看了网上很多的资料,一些基本的概念, 例如accept和recive要到返回EAGAIN或EWOULDBLOCK才停止。 问题: 如EPOLL的作者Davide Libenzi所说,如果你对一fd同时注册EPOLLIN | epollout事件, 即使发送缓冲区并非由满变空,也会触发epollout事件(参考链接:http://www.0x61.com/forum/post3712824.html)。 他指出使用epoll的最好是用ATM模式,当真正需要用...

by future0906 - C/C++ - 2012-02-06 12:04:03 阅读(15830) 回复(12)

早上花了3个小时大致浏览了这个版本的libevent。 有点儿不明白它是如何处理socket可写的情况? 恳请熟悉的朋友解答 上上周写过一个socket通信框架,典型的reactor,不到五千行代码。 我是这样做的:socket描述符封装中,提供了两种send方法,一个是由epollout事件驱动,也就是epollwait返回OUT时调用,如果::send的返回值与要发送的字节数相等,那么epoll_ctl,不在监视OUT事件; 一个与epollout无关,网络线程每一轮都要调用它(...

by okocha-jay - C/C++ - 2010-09-19 17:06:31 阅读(3103) 回复(3)

以前写过一个epoll LT模式的网游服务器的socket通信架构; 据说ET模式在大连接情形下更高效,但是更难用; LT似乎是关注资源,ET关注事件; 只要资源还有,LT就会通知你; 只要新资源到达,ET也会通知你;但是如果你不用完,又没有新资源到达,就不再理你了。剩下的资源。。浪费着。。 关于recv的两种方式处理还是很好理解; 但是至今没想通关于send的处理; 因为linux下有个“bug”,epoll对epollout事件总会返回真(只...

by okocha-jay - C/C++ - 2010-08-02 15:04:03 阅读(8293) 回复(11)