libevent异步网络库

  • 小麦克
  • LV4工程师
  • |      2015-08-30 06:58:13
  • 浏览量 1909
  • 回复:6


现在一般的物联网服务器都需要处理大量的socket链接。这些socket有个共同点:每次数据量不大,但是需要时刻保持连接。
如果采用同步socket(每个socket使用一个线程管理,那么服务器资源消耗非常大)。
处理这些socket的最佳方法是使用异步方法编写服务器端程序。而libevent库就是一个不错的选择。
libevent为异步网络库,使用C语言编写。

总体来说,libevent有下面一些特点和优势:
 * 事件驱动,高性能;
 * 轻量级,专注于网络; 
 * 跨平台,支持 Windows、Linux、Mac OS;
 * 支持多种 I/O多路复用技术, epoll、poll、dev/poll、select 和kqueue 等; 
 * 支持 I/O,定时器和信号等事件;


这两天我的树莓派SD卡又坏了,不知道是SD质量原因还是其他原因。不想折腾了,把之前的beaglebone black拿出来玩,beaglebone black自带4GB eMMC Flash,什么时候树莓派要加一个就方便多了啊!

这些开源硬件都是运行的linux系统,从系统层面来说基本一致,不影响我们的学习。



从官网下载最新的稳定版libevent-2.0.22

http://libevent.org/





我在beaglebone black上进行测试,首先写个简单的定时器


1. 解压

tar -xzf libevent-2.0.22-stable.gz

cd libevent-2.0.22-stable

2. 编译

./configure

make

make install




编译执行

g++ -levent -o libevent_timer libevent_timer.cpp


运行

./libevent_timer



TCP 服务器测试





编译

g++ -levent -o libevent_tcp libevent_tcpserver.cpp

测试

./libevent_tcp



使用nodejs编写测试客户端



使用的源代码打包


  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:5
ttxifu 2016-01-05
世界因你更美丽,顶顶贴,争做热心会员
0   回复
举报
发布
suoma 2015-09-02
我的SD用了一年了,没啥问题,才class 4
0   回复
举报
发布
小麦克 2015-09-02

可能是我的SD卡质量不行,金士顿和闪迪的都试过,用一段时间就会出文件系统错误。必须重新刷机才行。


0   回复
举报
发布
小麦克 2015-08-30
OK。已更新,欢迎讨论
0   回复
举报
发布
Robin 2015-08-30
期待中...
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子