日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【Libevent】Libevent学习笔记(一):简介和安装

發(fā)布時(shí)間:2024/4/24 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Libevent】Libevent学习笔记(一):简介和安装 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。