阿龙的自留地

兼济天下则达 独善其身则穷

用epoll提供telnet服务


最近实现一个小功能,统计引擎中搜索次数,成功的次数,失败的次数,增加的记录等等,并通过socket连接提供服务,就像memcache一样,可以通过命令查询当前的状态。

于是想到以前写FTP服务器时与这个功能很类似,当时是用的多进程,可是现在不同,只能用线程,于是想到用多线程,来一个连接就开一个线程去处理,可是组长说这还是太麻烦了,可以看看select,poll,epoll等等,说实话,虽然这些都有听过,但都没有用过,这次正好可以试试。看了《UNIX环境高级编程》上的例子,大概知道什么意思,可是书上又没有例子,而且对epoll都没有介绍,只好参考网上的资料,在Epoll在LT和ET模式下的读写方式中有比较详细的介绍,依葫芦画瓢,写了一个,很快就实现了,用telnet做客户端,能够提供服务。

只是还有一些细节需要处理,如果epoll_wait是是否设置timeout,客户端关闭连接怎么处理等等,在另一篇文章中说到当read时,返回0时,就代表客户端关闭连接了,试了一下,可行。 这里本来是用发牢骚的地方,所以不想把代码贴这里,如果想看具体代码,请移步用epoll提供telnet服务的代码

参考资料

Epoll在LT和ET模式下的读写方式

How to use epoll? A complete example in C