如何使用libevent写一个简单的服务器
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要为大家展示了"如何使用libevent写一个简单的服务器",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用libevent写一个简单的服务
千家信息网最后更新 2025年11月08日如何使用libevent写一个简单的服务器
这篇文章主要为大家展示了"如何使用libevent写一个简单的服务器",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用libevent写一个简单的服务器"这篇文章吧。
示例代码
#include#include #include #include #include #include #include #include #include void sock_read(int fd, short event, void *arg){ char buf[255]; int len; struct event *ev = arg; len = recv(fd, buf, sizeof(buf)-1, 0); if (len == -1) { perror("recv error/n"); if (errno != EAGAIN && errno != EINTR) { close(fd); free(ev); } return; } else if (len == 0) { close(fd); fprintf(stderr, "Connection closed/n"); free(ev); return; } buf[len] = '/0'; fprintf(stdout, "Read: %s/n", buf); /* Reschedule this event */ event_add(ev, NULL);}void sock_accept(int fd, short event, void *arg){ struct event *ev = arg; struct sockaddr addr; socklen_t len = sizeof(addr); //由于此结构要长期使用,所以rev必须动态分配,否则离开此函数后会自动释放,导致segment fault struct event* rev = (struct event*)malloc(sizeof(*rev)); int s = accept(fd, &addr, &len); if (s == -1) { perror("accept error/n"); return; } fprintf(stdout, "accept socket: %d/n", s); /* Initalize one event */ event_set(rev, s, EV_READ, sock_read, rev); /* Add it to the active events, without a timeout */ event_add(rev, NULL); /* Reschedule this event */ event_add(ev, NULL);}intmain (int argc, char **argv){ struct event ev; int fd; struct sockaddr_in addr; fd = socket(AF_INET, SOCK_STREAM, 0); if (fd == -1) { perror("socket error/n"); exit(-1); } bzero(&addr, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(10000); addr.sin_addr.s_addr = 0; if (bind(fd, (struct sockaddr*)&addr, sizeof(addr)) == -1) { perror("bind error/n"); exit(-1); } if (listen(fd, 5) == -1) { perror("listen error/n"); exit(-1); } /* Initalize the event library */ event_init(); /* Initalize one event */ event_set(&ev, fd, EV_READ, sock_accept, &ev); /* Add it to the active events, without a timeout */ event_add(&ev, NULL); event_dispatch(); return (0);}
以上是"如何使用libevent写一个简单的服务器"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
服务器
服务
内容
篇文章
学习
帮助
代码
函数
动态
易懂
更多
条理
知识
示例
结构
编带
行业
资讯
资讯频道
频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
海信网络技术创新创业共同体
网络安全法 个人信息方面
数据库建表总结
做兼职什么app软件开发
辽宁盘位机架式服务器虚拟主机
数据库汇交什么意思
洛阳理工学院服务器
北京东玲软件开发有限公司
网络安全攻防演练目标
东营轻工业软件开发报价
修改学生数据库
网络安全教育大学毕业论文
数据库连接错误无法启动
增福乡软件开发培训
台州借贷软件开发平台
深圳互联网医院科技公司
技术数据库软件开发
软件开发跟岗实习小结
智取网络安全
书籍搜索软件开发
国家网络安全事件应急处置
你是为网络安全大赛而生的什么梗
网络安全知识英语竞赛入口
数据库是在计算机系统集合
小型服务器怎么进入节能模式
小程序手机软件开发公司
五年级网络安全网络文明手抄报
河北民主评议软件开发
连接数据库的简单程序
恒生互联网科技业