【Libevent】Libevent学习笔记(一):简介和安装
00. 目錄
文章目錄
- 00. 目錄
- 01. libevent簡(jiǎn)介
- 02. Libevent的好處
- 03. Libevent的安裝和測(cè)試
- 04. Libevent成功案例
- 05. 參考資料
01. libevent簡(jiǎn)介
什么是libevent
? Libevent 是一個(gè)用C語(yǔ)言編寫的、輕量級(jí)的開源高性能事件通知庫(kù),主要有以下幾個(gè)亮點(diǎn):事件驅(qū)動(dòng)( event-driven),高性能;輕量級(jí),專注于網(wǎng)絡(luò),不如 ACE 那么臃腫龐大;源代碼相當(dāng)精煉、易讀;跨平臺(tái),支持 Windows、 Linux、 *BSD 和 Mac Os;支持多種 I/O 多路復(fù)用技術(shù), epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定時(shí)器和信號(hào)等事件;注冊(cè)事件優(yōu)先級(jí)。
? Chromium、Memcached、NTP、HTTPSQS等著名的開源程序都使用libevent庫(kù),足見libevent的穩(wěn)定。更多使用libevent的程序可以到libevent的官網(wǎng)查看。
libevent主要組成
? libevent包括事件管理、緩存管理、DNS、HTTP、緩存事件幾大部分。事件管理包括各種IO(socket)、定時(shí)器、信號(hào)等事件;緩存管理是指evbuffer功能;DNS是libevent提供的一個(gè)異步DNS查詢功能;HTTP是libevent的一個(gè)輕量級(jí)http實(shí)現(xiàn),包括服務(wù)器和客戶端。libevent也支持ssl,這對(duì)于有安全需求的網(wǎng)絡(luò)程序非常的重要,但是其支持不是很完善,比如http server的實(shí)現(xiàn)就不支持ssl。
libevent核心實(shí)現(xiàn)
? Reactor(反應(yīng)堆)模式是libevent的核心框架,libevent以事件驅(qū)動(dòng),自動(dòng)觸發(fā)回調(diào)功能。之前介紹的epoll反應(yīng)堆的源碼,就是從libevent中抽取出來(lái)的。
02. Libevent的好處
? 學(xué)習(xí)libevent有助于提升程序設(shè)計(jì)功力,除了網(wǎng)絡(luò)程序設(shè)計(jì)方面外,Libevent的代碼里有很多有用的設(shè)計(jì)技巧和基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),比如信息隱藏、函數(shù)指針、c語(yǔ)言的多態(tài)支持、鏈表和堆等等,都有助于提升自己的C語(yǔ)言功底。
? 程序設(shè)計(jì)不止要了解框架,很多細(xì)節(jié)之處恰恰也是事關(guān)整個(gè)系統(tǒng)成敗的關(guān)鍵。只對(duì)libevent本身的框架大概了解,那或許僅僅是一知半解,不深入代碼分析,就難以了解其設(shè)計(jì)的精巧之處,也就難以為自己所用。
03. Libevent的安裝和測(cè)試
官方網(wǎng)站: http://libevent.org
源碼包下載:
-
- 1.4.x 系列,較為早期版本,適合源碼學(xué)習(xí)
-
- 2.x 系列,較新的版本,代碼量比1.4版本多很多,功能也更完善。
源碼包的安裝,以2.0.22版本為例,在官網(wǎng)可以下載到源碼包libevent-2.0.22-stable.tar.gz,基本安裝步驟與第三方庫(kù)源碼包安裝方式基本一致。
安裝步驟如下:
第一步: 解壓
deng@itcast:~$ tar -xvf libevent-2.0.22-stable.tar.gz
第二步: 進(jìn)入到對(duì)應(yīng)的目錄
deng@itcast:~$ cd libevent-2.0.22-stable/
第三步: 檢測(cè)環(huán)境, 生成Makefile
deng@itcast:~/libevent-2.0.22-stable$ ./configure
第四步: 編譯 生成動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)
deng@itcast:~/libevent-2.0.22-stable$ make
第五步: 安裝 一定要使用管理員的權(quán)限
deng@itcast:~/libevent-2.0.22-stable$ sudo make install
第六步: 測(cè)試 執(zhí)行hello-world
deng@itcast:~/libevent-2.0.22-stable$ cd sample/
deng@itcast:~/libevent-2.0.22-stable/sample$ pwd
/home/deng/libevent-2.0.22-stable/sample
deng@itcast:~/libevent-2.0.22-stable/sample$ ./hello-world
另外打開一個(gè)終端, 輸入如下命令
deng@itcast:~/libevent-2.0.22-stable/sample$ nc 192.168.73.44 9995
Hello, World!
如果出現(xiàn)你好, 世界! 說(shuō)明軟件安裝ok…
庫(kù)所在目錄: /usr/local/lib
頭文件所在的目錄: /usr/local/include
04. Libevent成功案例
- Chromium - 谷歌的開源網(wǎng)絡(luò)瀏覽器(在Mac和Linux上使用Libevent)
- Memcached - 一種高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng)
- Transmission- 一個(gè)快速,簡(jiǎn)單,免費(fèi)的BitTorrent客戶端
- NTP - 使您的時(shí)鐘正確的網(wǎng)絡(luò)時(shí)間協(xié)議(在SNTP中使用Libevent)
- tmux - 一個(gè)干凈,現(xiàn)代,BSD許可的終端多路復(fù)用器,類似于GNU屏幕
- Tor - 一個(gè)匿名的互聯(lián)網(wǎng)通信系統(tǒng)。
- libevhtp - libevent的http客戶端/服務(wù)器API的快速而靈活的替代品
- Prosody - 用Lua編寫的Jabber / XMPP服務(wù)器
- PgBouncer - PostgreSQL的輕量級(jí)連接池
- redsocks - 一個(gè)簡(jiǎn)單的透明TCP - > Socks5 / HTTPS代理守護(hù)進(jìn)程。
- Crawl 一個(gè)小而高效的HTTP抓取工具
- Libio - 輸入/輸出抽象庫(kù)
- Honeyd - 一個(gè)虛擬的蜜網(wǎng)守護(hù)進(jìn)程 - 可以用來(lái)對(duì)抗互聯(lián)網(wǎng)蠕蟲。
- Fragroute - IDS測(cè)試工具
- Nylon - 嵌套代理服務(wù)器
- Disconcert - 松散耦合工作站的分布式計(jì)算框架。
- watchcatd - 軟件看門狗,旨在采取不像通常的解決方案那樣激烈的行動(dòng),重置機(jī)器。
- ScanSSH - 快速SSH服務(wù)器和開放代理掃描程序。
- Nttlscan - Honeyd的網(wǎng)絡(luò)拓?fù)鋻呙鑳x。
- NetChat - netcat和ppp聊天的組合。
- Io - 一種小型編程語(yǔ)言; 使用libevent進(jìn)行網(wǎng)絡(luò)通信。
- Systrace - 系統(tǒng)調(diào)用沙箱。
- SpyBye - 檢測(cè)網(wǎng)頁(yè)上的惡意軟件。
- GreenSQL - 一個(gè)SQL數(shù)據(jù)庫(kù)防火墻。
- dnsscan - 用于識(shí)別開放遞歸dns解析器的快速掃描器
- Kargo Event - libevent的PHP擴(kuò)展。
- Scytale - 一種數(shù)據(jù)庫(kù)加密工具。
05. 參考資料
官方參考網(wǎng)站: https://www.monkey.org/~provos/libevent/doxygen-2.0.1/index.html
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的【Libevent】Libevent学习笔记(一):简介和安装的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C语言】控制台窗口图形界面编程(七):
- 下一篇: 【Libevent】Libevent学习