ChinaUnix.net
相关文章推荐:

epoll 封装

Linux 2.6内核中提高网络I/O性能的新方法epoll 正如我昨天在“Linux下各类TCP网络服务器的实现源代码”( http://zhoulifa.bokee.com/5345930.html )一文中提到的那样,I/O多路复用技术在比较多的TCP网络服务器中有使用,即比较多的用到select函数。 感谢chinaunix.net上朋友safedead( http://bbs.chinaunix.net/viewpro.php?uid=407631 )提醒,我今天仔细研究了一下,证实了在2.6内核中的新的I/O技术epoll。 1、为什么select是...

by jiablog - 网络技术文档中心 - 2009-01-11 00:59:06 阅读(1946) 回复(0)

相关讨论

发现epoll 有个问题, 连接上后,客户端连续发送两个请求,epoll 只检测到一个可读事件! 郁闷, 如果客户端是多线程,有可能同时向同一个socket发送消息,这样服务端这边的epoll就只检测到一个可读事件, 有啥办法没。 对于服务端创建的那个监听socket 可以用 while(1) { accept(); ...

by 齐得龙强更强 - C/C++ - 2009-08-24 22:30:17 阅读(7521) 回复(13)

epoll_wait函数的返回值 是不是就是poll函数中的参数 nfds?

by debuger - C/C++ - 2008-10-28 16:49:20 阅读(1366) 回复(2)

server端: ev.data.fd=connfd; ev.events=epollIN|epollOUT|epollET; epoll_ctl(epfd,epoll_CTL_ADD,connfd,&ev); while(1) { nfds=epoll_wait(epfd,events,20,500); for(i=0;i<=nfds;i++) { if(events.events&epollIN) { recv(events.data.fd,line,5,0); ......... } else if(events.events&epollOUT) { do_process(); } ...

by chenzhanyiczy - C/C++ - 2009-02-04 11:11:37 阅读(3006) 回复(18)

首先引用一个服务器端 epoll 的实例。原帖地址:http://blog.chinaunix.net/u/16292/showart_1844376.html [/code] #include #include #include epoll.h> #include #include #include #include #include #include using namespace std; #define MAXLINE 5 #define OPEN_MAX 100 #define LISTENQ 20 #define SERV_PORT ...

by wzw19191 - C/C++ - 2009-06-22 09:33:37 阅读(3684) 回复(10)

epoll的ET模式下,有时会发生如下的问题 1. epoll触发FD=A的事件 。 2.处理FD=A的事件并销毁A(即epoll_ctl_del(A)并close(A) ) 。 3.epoll再次触发FD=A的事件 。 如果这时候对象已经被删除或被重用,程序就会出现问题 。 哪位大侠解释下,不胜感激。

by lxyfirst - C/C++ - 2009-05-14 22:13:36 阅读(3278) 回复(7)

服务器有很多客户端连入, 如果一个客户端10秒钟内没发送任何数据, 服务器就关闭链接。 但是怎样让epoll响应SO_RCVTIMEO, 或者有没有啥其它好办法实现这个功能? 我目前想到的方法是用两个线程, 一个epoll, 另一个不停地扫描所有的链接。

by koolcoy - C/C++ - 2011-09-23 13:28:36 阅读(6820) 回复(15)

typedef union epoll_data { void *ptr; //这个参数是干什么用的??????????????? int fd; __uint32_t u32; __uint64_t u64; } epoll_data_t; 各位大虾,帮我看看能不能实现这个功能: ev.data.ptr = X; //给ev.data.ptr 赋值 : 其中 X 值可以是整型, 也可是字符型 ev.data.fd = m_socket; 在后面的可读事件中...

by liujq110 - C/C++ - 2009-03-18 15:48:44 阅读(1482) 回复(5)

epoll 使用epollHUP 无法监测对方异常掉线 各位大虾好: 在网上看到epoll 例子千篇一律, 检测的事件基本都是epollIN epollOUT 这两个例子相对来说好测一点 但是这几个参数事件我却无法检测,当然和我的知识面有关。希望了解的大虾给予指点: epollPRI:表示对应的文件描述符有紧急的数据可读(这里应该表示有带外数据到来); epollERR:表示对应的文件描述符发生错误; epollHUP:表示对应的文件描述符被挂断; ...

by liujq110 - C/C++ - 2009-03-13 12:48:47 阅读(5581) 回复(14)

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明: #define __FD_SETSIZE 1024 表示select最多同时监听1024个fd,当然,可以通过修改头文件...

by sss0213 - 网络技术文档中心 - 2009-01-12 09:49:20 阅读(1282) 回复(0)

epoll会报的事件会不会有丢失而未报告的?

by UnixStudier - C/C++ - 2008-05-21 17:41:53 阅读(2143) 回复(3)