Libevent库笔记(三)服务器和客户端开发的最基本的流程

1.TCP服务端和客户端开发最基本流程

1.1.服务端编程流程

1、创建event_base_new()创建框架上下文对象event base
2、evconnlistener_new_bind分配一个监听器对象,监听给定地址上的TCP连接,通知设置监听回调(当新连接到来时,框架会调用)。
备注:这个函数相当于完成系统调用socket()、bind()、listen(),并设置accept回调函数
(1)在监听回调中通过一个已存在的socket描述符创建socket bufferevent;
(2)设置bufferevent事件的回调函数;
(3)启用/禁用bufferevent相关写缓存区
3、启动事件调度循环event_base_dispatch()
4、根据业务逻辑进行读写操作bufferevent_read() /bufferevent_write()
5、结束则释放相关资源;

1.2.客户端编程流程

1、创建event_base_new()创建框架上下文对象event base
2、使用bufferevent socket new()创建和服务器通讯的bufferevent事件
3、设置bufferevent事件的事件回调函数bufferevent_setcb(),在事件回调体中
(1)判断events事件值为BEV_EVENT_CONNECTED,则进行连接成功的逻辑处理;
(2)判断events事件值为BEV_EVENT_ERROR,则进行连接发生错误的逻辑处理;
4、bufferevent_socket_connect()连接服务器
(1)若直接返回-1,则代表已经出错,进行出错逻辑处理;
(2)如果返回0,则代表几种可能,可能成功,也可能还在握手阶段,具体根据设置的事件回调中进行判断
5、启动事件调度循环event_base_dispatch()
6、根据业务逻辑进行读写操作bufferevent_read() /bufferevent_write()
7、结束则释放相关资源;

1.3.服务端示例代码

参考官方源码包中的hello-world.c。
注释版见地址:
Libevent库笔记(二)样例代码hello-world的注解版本

1.4.客户端编程示例代码

说明:此代码来自于网络文章,太多的文章中使用了此代码,也不知道哪个是原创了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值