欢迎来到天天文库
浏览记录
ID:8872267
大小:51.40 KB
页数:10页
时间:2018-04-10
《黑马程序员c语言教程:libevent》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、标题:深入浅出-服务器高并发库libevent(一)1安装libevent是一个开源的高并发服务器开发包,官方地址http://libevent.org/libevent目前有两个版本一个是1.4系列版本,一个是2.0系列版本。我们可以在官方网站上看到类似有个stable表示稳定版本。·libevent-1.4.15-stable.tar.gz 对于初学者学习,建议从1.4版本学起。在安装libevent之前先判断本电脑是否已经安装了通过指令ls-al/usr/lib
2、greplibevent如果没有任何信息
3、则表示没有安装,有的话如果发现libevent是1.3以下版本,则可以同过执行rpm-elibevent—nodeps 进行卸载。如果是其他操作系统使用其他对应卸载指令即可。对于下好的tar包,通过tar-zxvflibevent-release-1.4.15-stable.tar.gz指令解压。然后执行./configure命令,但是有的包可能没有configure文件,却存在一个autogen.sh脚本,运行这个脚本。(如果运行不起来请安装autoconf包)然后./configure–prefix=/u
4、srmakesudomakeinstall安装完之后执行ls-al/usr/lib/
5、greplibevent如果发现有libevent文件库存在就代表安装完毕。2简单的libevent服务器我们通过连接libevent库来进行管理libevent库,所以在使用gcc或者g++编译的时候最后需要加上-levent下面是一个简单的libevent服务器。#include#include#include#include#incl
6、ude#include#include#include#includeusingnamespacestd;#defineSERVER_ADDR"127.0.0.1"#defineSERVER_PORT8888//事件basestructevent_base*base;//读事件回调函数voidonRead(intiCliFd,shortiEvent,void*arg){intiLen;charbuf[
7、1500];iLen=recv(iCliFd,buf,1500,0);if(iLen<=0){cout<<"ClientClose"<8、t*buf_ev;buf_ev=bufferevent_new(iCliFd,NULL,NULL,NULL,NULL);buf_ev->wm_read.high=4096;charMESSAGE[]="welcometoserver..";bufferevent_write(buf_ev,MESSAGE,strlen(MESSAGE));}//连接请求事件回调函数voidonAccept(intiSvrFd,shortiEvent,void*arg){intiCliFd;structsockaddr_insC9、liAddr;socklen_tiSinSize=sizeof(sCliAddr);iCliFd=accept(iSvrFd,(structsockaddr*)&sCliAddr,&iSinSize);//连接注册为新事件(EV_PERSIST为事件触发后不默认删除)structevent*pEvRead=newevent;event_set(pEvRead,iCliFd,EV_READ10、EV_PERSIST,onRead,pEvRead);event_base_set(base,pEvRead);event11、_add(pEvRead,NULL);structbufferevent*buf_ev;buf_ev=bufferevent_new(iCliFd,NULL,NULL,NULL,NULL);buf_ev->wm_read.high=4096;charMESSAGE[]="welcometoserver..";bufferevent_write(buf_ev,MESSAGE,strlen(MESSAG
8、t*buf_ev;buf_ev=bufferevent_new(iCliFd,NULL,NULL,NULL,NULL);buf_ev->wm_read.high=4096;charMESSAGE[]="welcometoserver..";bufferevent_write(buf_ev,MESSAGE,strlen(MESSAGE));}//连接请求事件回调函数voidonAccept(intiSvrFd,shortiEvent,void*arg){intiCliFd;structsockaddr_insC
9、liAddr;socklen_tiSinSize=sizeof(sCliAddr);iCliFd=accept(iSvrFd,(structsockaddr*)&sCliAddr,&iSinSize);//连接注册为新事件(EV_PERSIST为事件触发后不默认删除)structevent*pEvRead=newevent;event_set(pEvRead,iCliFd,EV_READ
10、EV_PERSIST,onRead,pEvRead);event_base_set(base,pEvRead);event
11、_add(pEvRead,NULL);structbufferevent*buf_ev;buf_ev=bufferevent_new(iCliFd,NULL,NULL,NULL,NULL);buf_ev->wm_read.high=4096;charMESSAGE[]="welcometoserver..";bufferevent_write(buf_ev,MESSAGE,strlen(MESSAG
此文档下载收益归作者所有