网络编程之 libevent库介绍

目录

介绍基本概念:

介绍一下库的内容:

 libevent库例的使用


介绍基本概念:

libevent的核心实现:   和前边讲的Reactor 差不多

在linux上, 其实质就是epoll反应堆.

libevent是事件驱动, epoll反应堆也是事件驱动, 当要监测的事件发生的时候, 就会调用事件对应的回调函数, 执行相应操作. 特别提醒: 事件回调函数是由用户开发的, 但是不是由用户显示去调用的, 而是由libevent去调用的.

介绍一下库的内容:

include /event2 是在2.0 以后版本引入的 以前的版本没有此文件夹

  • 以event.h开头的提供核心函数,  http.h 提供http协议相关服务类型 rcp.h 提供远程过程调用等功能。
  • 还存在通用数据结构目录 compat/sys 该目录下 存在一个queue.h文件  里面封装了基础出具结构 包括单向链表  双向链表 队列,等。如下:链表
#define LIST_HEAD(name, type)						\
struct name {								\
	struct type *lh_first;	/* first element */			\
}

#define LIST_HEAD_INITIALIZER(head)					\
	{ NULL }

#define LIST_ENTRY(type)						\
struct {								\
	struct type *le_next;	/* next element */			\
	struct type **le_prev;	/* address of previous next element */	\
}
  • Sample 存在一些实例代码等;
  • test存在一些测试代码 压力测试等;
  • WIN32-Code 目录 提供Windows平台的专用代码;
  • event.c文件 该文件是libevent 整体框架 主要存在event和event_base 两个主要结构;
  • devpool.c    kqueue.c evport.c  select.c poll.c epoll.c 分别封装了I/O复用机制,常见的poll select   epoll 函数等并且留有接口函数;
  • signal.c 提供了一些信号触发函数 其内容为eventop定义的结构体的具体实现
  • evthread*.c 支持多线程函数;
  • listener.c 对listen进行封装 包括监听和连接过程。
  • htttp.c 对文件http 访问进行了函数封装。

 

 libevent库例的使用

进入到libevent-2.0.22-stable/sample下, 可以查看一些示例源代码文件.

使用libevent库编写代码在编译程序的时候需要指定库名:-levent;

安装文件的libevent库文件所在路径:libevent-2.0.22-stable/.libs;

编写代码的时候用到event.h头文件, 或者直接参考sample目录下的源代码文件也可以.

#include <event2/event.h>

编译源代码文件(以hello-world.c文件为例)

gcc hello-world.c -levent

由于安装的时候已经将头文件和库文件拷贝到了系统头文件所在路径/usr/local/include和系统库文件所在路径/usr/local/lib, 所以这里编译的时候可以不用指定-I和-L.

编译示例代码hello-world.c程序:

gcc -o hello-world hello-world.c -levent

测试: 在另一个终端窗口进行测试,

输入: nc 127.1 9995, 然后回车立刻显示     Hello, World!       字符串.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值