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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

00. 目錄

文章目錄

    • 00. 目錄
    • 01. libevent簡介
    • 02. Libevent的好處
    • 03. Libevent的安裝和測試
    • 04. Libevent成功案例
    • 05. 參考資料

01. libevent簡介

什么是libevent

? Libevent 是一個用C語言編寫的、輕量級的開源高性能事件通知庫,主要有以下幾個亮點:事件驅動( event-driven),高性能;輕量級,專注于網絡,不如 ACE 那么臃腫龐大;源代碼相當精煉、易讀;跨平臺,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多種 I/O 多路復用技術, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定時器和信號等事件;注冊事件優先級。

? Chromium、Memcached、NTP、HTTPSQS等著名的開源程序都使用libevent庫,足見libevent的穩定。更多使用libevent的程序可以到libevent的官網查看。

libevent主要組成

? libevent包括事件管理、緩存管理、DNS、HTTP、緩存事件幾大部分。事件管理包括各種IO(socket)、定時器、信號等事件;緩存管理是指evbuffer功能;DNS是libevent提供的一個異步DNS查詢功能;HTTP是libevent的一個輕量級http實現,包括服務器和客戶端。libevent也支持ssl,這對于有安全需求的網絡程序非常的重要,但是其支持不是很完善,比如http server的實現就不支持ssl。

libevent核心實現

? Reactor(反應堆)模式是libevent的核心框架,libevent以事件驅動,自動觸發回調功能。之前介紹的epoll反應堆的源碼,就是從libevent中抽取出來的。

02. Libevent的好處

? 學習libevent有助于提升程序設計功力,除了網絡程序設計方面外,Libevent的代碼里有很多有用的設計技巧和基礎數據結構,比如信息隱藏、函數指針、c語言的多態支持、鏈表和堆等等,都有助于提升自己的C語言功底。

? 程序設計不止要了解框架,很多細節之處恰恰也是事關整個系統成敗的關鍵。只對libevent本身的框架大概了解,那或許僅僅是一知半解,不深入代碼分析,就難以了解其設計的精巧之處,也就難以為自己所用。

03. Libevent的安裝和測試

官方網站: http://libevent.org

源碼包下載:

    • 1.4.x 系列,較為早期版本,適合源碼學習
    • 2.x 系列,較新的版本,代碼量比1.4版本多很多,功能也更完善。

源碼包的安裝,以2.0.22版本為例,在官網可以下載到源碼包libevent-2.0.22-stable.tar.gz,基本安裝步驟與第三方庫源碼包安裝方式基本一致。

安裝步驟如下:

第一步: 解壓

deng@itcast:~$ tar -xvf libevent-2.0.22-stable.tar.gz

第二步: 進入到對應的目錄

deng@itcast:~$ cd libevent-2.0.22-stable/

第三步: 檢測環境, 生成Makefile

deng@itcast:~/libevent-2.0.22-stable$ ./configure

第四步: 編譯 生成動態庫和靜態庫

deng@itcast:~/libevent-2.0.22-stable$ make

第五步: 安裝 一定要使用管理員的權限

deng@itcast:~/libevent-2.0.22-stable$ sudo make install

第六步: 測試 執行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

另外打開一個終端, 輸入如下命令

deng@itcast:~/libevent-2.0.22-stable/sample$ nc 192.168.73.44 9995
Hello, World!

如果出現你好, 世界! 說明軟件安裝ok…

庫所在目錄: /usr/local/lib

頭文件所在的目錄: /usr/local/include

04. Libevent成功案例

  • Chromium - 谷歌的開源網絡瀏覽器(在Mac和Linux上使用Libevent)
  • Memcached - 一種高性能的分布式內存對象緩存系統
  • Transmission- 一個快速,簡單,免費的BitTorrent客戶端
  • NTP - 使您的時鐘正確的網絡時間協議(在SNTP中使用Libevent)
  • tmux - 一個干凈,現代,BSD許可的終端多路復用器,類似于GNU屏幕
  • Tor - 一個匿名的互聯網通信系統。
  • libevhtp - libevent的http客戶端/服務器API的快速而靈活的替代品
  • Prosody - 用Lua編寫的Jabber / XMPP服務器
  • PgBouncer - PostgreSQL的輕量級連接池
  • redsocks - 一個簡單的透明TCP - > Socks5 / HTTPS代理守護進程。
  • Crawl 一個小而高效的HTTP抓取工具
  • Libio - 輸入/輸出抽象庫
  • Honeyd - 一個虛擬的蜜網守護進程 - 可以用來對抗互聯網蠕蟲。
  • Fragroute - IDS測試工具
  • Nylon - 嵌套代理服務器
  • Disconcert - 松散耦合工作站的分布式計算框架。
  • watchcatd - 軟件看門狗,旨在采取不像通常的解決方案那樣激烈的行動,重置機器。
  • ScanSSH - 快速SSH服務器和開放代理掃描程序。
  • Nttlscan - Honeyd的網絡拓撲掃描儀。
  • NetChat - netcat和ppp聊天的組合。
  • Io - 一種小型編程語言; 使用libevent進行網絡通信。
  • Systrace - 系統調用沙箱。
  • SpyBye - 檢測網頁上的惡意軟件。
  • GreenSQL - 一個SQL數據庫防火墻。
  • dnsscan - 用于識別開放遞歸dns解析器的快速掃描器
  • Kargo Event - libevent的PHP擴展。
  • Scytale - 一種數據庫加密工具。

05. 參考資料

官方參考網站: https://www.monkey.org/~provos/libevent/doxygen-2.0.1/index.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的【Libevent】Libevent学习笔记(一):简介和安装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。