如何使用libevent写一个简单的服务器
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,这篇文章主要为大家展示了"如何使用libevent写一个简单的服务器",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用libevent写一个简单的服务
千家信息网最后更新 2025年02月06日如何使用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安全错误
数据库的锁怎样保障安全
湖南通用软件开发直销价格
vc 网络安全编程范例
审计网络安全信息化
国家网络安全宣传主题活动
甘肃曙光服务器维修系统云主机
海口典盛互联网科技有限公司
黑色沙漠手游服务器有几个
如何用c注册数据库
大话西游2服务器排行榜
开展网络安全排查
服务器维护怎么充话费
学生管理软件开发费用
老ibm服务器管理口地址
数据库教材立项申报书
谁负责数据库设计
软件开发维护的方法
郑州资金盘软件开发
泰拉瑞亚777端口的服务器
吴忠存储服务器
九江市软件开发公司
学习网络安全选哪家机构
凤阳工业软件开发技术怎么样
小学校园网络安全播音稿
问答式数据库设计表
软件开发实习到华为能转正吗
服务器清理日志脚本教程
jsp访问数据库运行空白
网络安全手全手抄报图片
软件开发商保密资质
上海电子软件开发来电咨询