在linux下学习了一段时间网络编程,主体的编程思路懂得差不多了(windows下做过,基本差不多),所以决定看些开源的库来实际学习一下.故选择了相对简练的libevent进行代码阅读.在读的过程中,参考了一位已经将libevent解析的很清楚的大神的博客.http://blog.csdn.net/sparkliang/article/details/4957667
这里算是自己学习过程中的一些结果写出来,供大家参考.源码使用的也是1.4.13稳定版.
一.支持多种网络模型原理
在libevent官网上,大家都看到libevent支持各种不同的网络模型,而且还支持跨平台.其实这部分如果从C++的编程思想来看,大家可以很容易想到,利用类的继承加上虚函数实现.
1.首先构建一个基类,定义接口函数
2.继承这个基类,实现多个不同网络模型方法(接口)
3.使用指向子类的基类指针实现统一访问
由于libevent使用纯C代码实现,所以上面的部分只是给大家回忆一下C++怎么实现的而已,但是基本思想差不多一致.下面结合libevent的实际代码说明.
1.基类与接口,本部分代码位于event-internal.h文件中
struct eventop {
const ch