服务器端 libevent 创建TCP连接
-
创建event_base_new();
-
使用 evconnlistener_new_bind 创建监听服务器,设置其回调函数listner_cb(),当有客户端成功连接时回调函数被调用。
-
封装 listner_cb() ,在函数内部,完成:
-
创建bufferevent事件对象,bufferevent_socket_new();
-
使用bufferevent_setcb() 函数给bufferevent的 read、write、event 设置回调函数。
-
设置读缓冲、写缓冲的使能状态
-
启动循环 event_base_dispath();
-
当监听的事件满足时,read_cb会被调用。
-
释放连接 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