RT,最近想看点这方面的代码,有那个开源的工具是这个模型的么?最好是某个网络服务器的~~
by bedreaming - Linux环境编程 - 2008-03-19 20:53:28 阅读(1471) 回复(1)
大家有没有遇到epoll_wait()一次返回的事件里有相同的events,就是events.data.fd=events[j].data.fd (i!=j), 我测试的是一秒大概5000个tcp通信
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是...
epoll刚开始收包的时候正常。 收了一会以后一直阻塞epoll_wait这边。 我已经做了 struct epoll_event ev; ev.data.fd = client_socket; ev.events = epollIN|epollET; if (epoll_ctl(epfd, epoll_CTL_MOD, client_socket, &ev)) { perror("error1:"); exit(0); }
1、epoll能否监控普通文件描述符,像监控socket那样 2、如果不能的话,要是有多个普通文件描述符,需要监控,有类似于epoll监控socket的方法吗?
epoll_ctl(epfd, epoll_CTL_ADD, sockfd, &ev) epoll_ctl(epfd, epoll_CTL_ADD, sockfd, &ev) 可不可以对同一个sockfd添加两次呢? epoll_wait(epfd, events, MAX_EVENTS, -1); 如果可以那events集合里会返回两个吗?
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明: #define __FD_SETSIZE 1024 表示select最多同时监听1024个fd,当然,可以通过修改头文件再...
以下描述都是站在服务器角度看的 ET方式下: 如果有数据 进入(也就是对应客户单的send),则触发事件。如果服务器没有读取完毕,也不再通 知。当然后续如果有继续的send或者关闭 请求,将还会通知。要理解缓冲区的变化,或者socket 状态变化。 在此事件通知 是指对应描述符socket状态的变化时候触发的。比如有数据进出,或者关闭。 所谓状态变化,主要是对方在该socket描述符上的操作(...