#include <event.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#define SERVER_PORT 8080
int debug = 0;
struct client {
int fd;
struct bufferevent *buf_ev;
};
int setnonblock(int fd)
{
int flags;
flags = fcntl(fd, F_GETFL);
flags |= O_NONBLOCK;
fcntl(fd, F_SETFL, flags);
}
void buf_read_callback(struct bufferevent *incoming,
void *arg)
{
struct evbuffer *evreturn;
char *req;
req = evbuffer_readline(incoming->input);
if (req == NULL)
return;
evreturn = evbuffer_new();
evbuffer_add_printf(evreturn,"You said %s\n",req);
bufferevent_write_buffer(incoming,evreturn);
evbuffer_free(evreturn);
free(req);
}
void buf_write_callback(struct bufferevent *bev,
libevent的使用方法--回显服务器的简单实例
最新推荐文章于 2023-12-28 15:16:08 发布
本文介绍了如何使用libevent库创建一个简单的回显服务器。主要步骤包括:1) 主函数创建监听套接字并设置accept回调;2) accept_callback处理新连接,添加客户端套接字事件回调;3) buf_read_callback读取客户端数据并回显;4) 错误处理回调buf_error_callback在客户端断开连接时释放资源。通过libevent,可以高效地管理网络事件,实现非阻塞I/O。
摘要由CSDN通过智能技术生成