日期:2014-05-16  浏览次数:20861 次

epoll模型 客户端只连接不发送任何数据能收到EPOLLIN事件?
RT,大量客户端连接,只connect了,没有发送数据,按理只会有 events_[__n].data.fd == listenfd_,  怎么会有events_[__n].data.event == EPOLLIN呢?是否我理解上有问题!
谢谢!

------解决方案--------------------
对端close,本端将会读到EOF,表现为read返回0,触发可读事件。
------解决方案--------------------
由于底层通信socket用epoll来管理所有的链接,用epoll_wait来等待所有的事件触发,然后针对不同的事件、不同的socket做不同的处理。虽然客户端只是连接,没有发送数据,但当对方主动关闭了socket的时候会触发一个EPOLLIN事件的。这样做的好处是主方可以对这个socket做响应的处理。例如:以这个socket为关键字关联了一些其他的数据,当socket被关闭了之后需要释放这些数据所占用的内存。