libevent 创建TCP连接流程以及代码

本文详细介绍了使用libevent在服务器端和客户端创建TCP连接的流程。在服务器端,通过event_base_new()创建基础事件,evconnlistener_new_bind()建立监听,并在连接成功时调用listner_cb()回调。在listner_cb()中,创建bufferevent对象并设置回调函数,启动事件循环。客户端则通过event_base_new()创建基础事件,使用bufferevent_socket_new()连接服务器,同样设置回调函数和启动事件循环,实现与服务器的数据交互。最后,双方在完成通信后释放资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器端 libevent 创建TCP连接
  1. 创建event_base_new();

  2. 使用 evconnlistener_new_bind 创建监听服务器,设置其回调函数listner_cb(),当有客户端成功连接时回调函数被调用。

  3. 封装 listner_cb() ,在函数内部,完成:

  4. 创建bufferevent事件对象,bufferevent_socket_new();

  5. 使用bufferevent_setcb() 函数给bufferevent的 read、write、event 设置回调函数。

  6. 设置读缓冲、写缓冲的使能状态

  7. 启动循环 event_base_dispath();

  8. 当监听的事件满足时,read_cb会被调用。

  9. 释放连接 evconnlistener_free(listener); event_base_free(base);

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <event2/bufferevent.h>
#include <event2/event.h>
#include <arpa/inet.h>

void read_cb(struct bufferevent *bev, void *arg)
{
   
    char buf[1024] = {
   0}; 
    bufferevent_read(bev, buf, sizeof(buf));

    printf("fwq say:%s\n", buf);

    bufferevent_write(bev, buf, strlen(buf)+1);
    sleep(1);
}

void write_cb(struct bufferevent *bev, void *arg)
{
   
    printf("----------我是客户端的写回调函数,没卵用\n"); 
}

void event_cb(struct bufferevent *bev, short events, void *arg)
{
   
    if (events & BEV_EVENT_EOF)
    {
   
        printf("connection closed\n");  
    }
    else if
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值