一般而言,我们有时候也需要写一些网络通信的功能,但是,用原生的TCP/UDP又让人感觉麻烦。所以,我们还是希望用某些lib。libevent就是一个很好的选择。只要花费一两个小时看了官方的文档[2],还是很容易开始使用这个lib的。
对于客户端程序,大多数情况下只有一个连接,甚至是一问一答这样的模式。是非常简单的模式。在服务端,我们一般使用Linux,相信现在使用BSD的也少了,更不用说Windows。所以,基本上也相当于我们使用libevent,也只是对epoll做了一层封装而已。但是,这层封装其实是非常好的、必要的。像我这样只是一年内有两周时间写网络相关代码的人,真的是没有时间来看TCP协议的细节和epoll的各种坑等等(即使有坑,我们这样的内部工具基本上也不怎么在意,死了重启,也不会影响重要业务)。libevent真的节省了时间,简单的先把功能实现出来即可。
另外,libevent也提供了HTTP解析的功能,我们可以实现一个简单的HTTP server,可用来提供redis、memcache等的HTTP接口。这样的需求,使用OpenResty实现会更简单。
15年末,老总的另外一个公司需要做VPN系统,用来辅助游戏加速和国内视频观看,搞了一通,还是不喜欢跟网络相关的开发工作的,这里面的坑很多。
- https://github.com/libevent/libevent
- http://www.wangafu.net/~nickm/libevent-book/TOC.html