資源描述:
《黑馬程序員c語言教程:libevent》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫。
1、標題:深入淺出-服務器高并發(fā)庫libevent(一)1安裝libevent是一個開源的高并發(fā)服務器開發(fā)包,官方地址http://libevent.org/libevent目前有兩個版本一個是1.4系列版本,一個是2.0系列版本。我們可以在官方網站上看到類似有個stable表示穩(wěn)定版本?!ibevent-1.4.15-stable.tar.gz?對于初學者學習,建議從1.4版本學起。在安裝libevent之前先判斷本電腦是否已經安裝了通過指令ls-al/usr/lib
2、greplibevent如果沒有任何信息
3、則表示沒有安裝,有的話如果發(fā)現(xiàn)libevent是1.3以下版本,則可以同過執(zhí)行rpm-elibevent—nodeps?進行卸載。如果是其他操作系統(tǒng)使用其他對應卸載指令即可。對于下好的tar包,通過tar-zxvflibevent-release-1.4.15-stable.tar.gz指令解壓。然后執(zhí)行./configure命令,但是有的包可能沒有configure文件,卻存在一個autogen.sh腳本,運行這個腳本。(如果運行不起來請安裝autoconf包)然后./configure–prefix=/u
4、srmakesudomakeinstall安裝完之后執(zhí)行l(wèi)s-al/usr/lib/
5、greplibevent如果發(fā)現(xiàn)有l(wèi)ibevent文件庫存在就代表安裝完畢。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_insC
9、liAddr;socklen_tiSinSize=sizeof(sCliAddr);iCliFd=accept(iSvrFd,(structsockaddr*)&sCliAddr,&iSinSize);//連接注冊為新事件(EV_PERSIST為事件觸發(fā)后不默認刪除)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