中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

岳陽市委網(wǎng)站免費seo網(wǎng)站推廣在線觀看

岳陽市委網(wǎng)站,免費seo網(wǎng)站推廣在線觀看,網(wǎng)站建設(shè)排行公司,做網(wǎng)站的技術(shù)libevent源碼學(xué)習(xí)筆記 libevent安裝libevent源碼解析(1)事件對象(2)事件操作(3)事件循環(huán)(4)事件處理 常用指令問題記錄問題一:長連接的管理問題二:連接關(guān)閉問…

libevent源碼學(xué)習(xí)筆記

  • libevent安裝
  • libevent源碼解析
    • (1)事件對象
    • (2)事件操作
    • (3)事件循環(huán)
    • (4)事件處理
  • 常用指令
  • 問題記錄
    • 問題一:長連接的管理
    • 問題二:連接關(guān)閉問題
    • 問題三:客戶端與服務(wù)器端存在多個TCP連接,數(shù)據(jù)發(fā)送是依次的還是并行的?

libevent安裝

(1)解壓libevent壓縮包并進入到文件目錄下
·tar -zxvf libevent-2.1.12-stable.tar.gz
·cd libevent-2.1.12-stable.tar/
在這里插入圖片描述

(2)運行./configure用于配置編譯選項和環(huán)境,由于系統(tǒng)中沒有OpenSSL庫,所以使用了–disable-openssl選項來禁用OpenSSL相關(guān)功能,減少依賴。
·./configure --disable-openssl
在這里插入圖片描述

(3)運行make命令用于編譯源代碼并生成示例可執(zhí)行文件或庫文件。
在這里插入圖片描述

(4)運行sudo make install用于安裝編譯生成的庫文件和頭文件到系統(tǒng)的標(biāo)準(zhǔn)位置,以便其他程序可以在編譯和鏈接時使用libevent.so庫。
在這里插入圖片描述

libevent源碼解析

libevent是一個事件驅(qū)動的網(wǎng)絡(luò)編程庫,它提供了一種跨平臺的方式來處理I/O事件和定時器事件。libevent事件驅(qū)動的核心是reactor模式。reactor模式將IO事件、定時器事件抽象成事件對象,并使用一個事件循環(huán)來監(jiān)聽這些事件對象。當(dāng)有事件發(fā)生時,事件循環(huán)會調(diào)用相應(yīng)的回調(diào)函數(shù)來處理這些事件。

(1)事件對象

·event_base_new()    //構(gòu)造對象
·event_base_free()    //銷毀對象
·event_new()        //構(gòu)建事件對象、綁定、事件回調(diào)
·event_free()        //銷毀事件對象
·bufferevent_socket_new()  //構(gòu)建bufferevent對象
·bufferevent_free()        //銷毀bufferevent對象

(2)事件操作

·event_add()         //注冊事件
·event_del()          //注銷事件
·bufferevent_enable()   //注冊事件
·bufferevent_disable()   //注銷事件

(3)事件循環(huán)

·event_base_dispatch() //啟動事件循環(huán),libevent會進入一個無限循環(huán)中,不斷監(jiān)聽注冊的I/O事件和定時器事件。當(dāng)有事件發(fā)生時,libevent會調(diào)用相應(yīng)的回調(diào)函數(shù)來處理這些事件。在事件處理完畢后,libevent會繼續(xù)等待下一個事件的發(fā)生。

·event_base_loop()      //啟動事件循環(huán),并一直等待事件的發(fā)生
·event_base_loopexit()   //通知事件循環(huán)在指定時間后退出
·event_base_break()     //通知事件循環(huán)在指定時間后立即退出

(4)事件處理

libevent使用事件驅(qū)動的編程模型來處理事件。在這種模型中,事件循環(huán)會不斷監(jiān)聽注冊的I/O事件和定時器事件。當(dāng)有事件發(fā)生時,libevent會調(diào)用相應(yīng)的回調(diào)函數(shù)來處理這些事件。當(dāng)使用libevent注冊一個事件時,libevent會將這個事件對象添加到事件循環(huán)中。當(dāng)有事件發(fā)生時,libevent會調(diào)用相應(yīng)的回調(diào)函數(shù)來處理這個事件。在回調(diào)函數(shù)中,可以執(zhí)行相應(yīng)的操作,例如讀取數(shù)據(jù)、發(fā)送數(shù)據(jù)、關(guān)閉連接等。
·libevent通信流程:

1.	初始化:首先需要創(chuàng)建一個事件處理器(event_base),并初始化它。在初始化過程中,可以設(shè)置事件處理器的一些參數(shù),比如事件處理模式、超時時間等。
2.	創(chuàng)建事件:在事件處理器中,需要創(chuàng)建需要監(jiān)聽的事件。通過調(diào)用event_new()函數(shù)來創(chuàng)建事件,并設(shè)置事件的回調(diào)函數(shù)和事件類型。
3.	添加事件:創(chuàng)建完事件之后,需要將事件添加到事件處理器中,通過調(diào)用event_add()函數(shù)來添加事件。添加事件之后,事件處理器就可以監(jiān)聽這些事件了。
4.	運行事件循環(huán):在添加完事件之后,需要進入事件循環(huán),等待事件的到來。通過調(diào)用event_base_dispatch()函數(shù)來運行事件循環(huán),當(dāng)有事件到來時,事件處理器會自動調(diào)用相應(yīng)的回調(diào)函數(shù)進行處理。
5.	處理事件:當(dāng)有事件到來時,事件處理器會自動調(diào)用相應(yīng)的回調(diào)函數(shù)進行處理。在回調(diào)函數(shù)中,可以進行相應(yīng)的操作,比如讀寫數(shù)據(jù)、關(guān)閉連接等。
6.	清理資源:當(dāng)程序退出時,需要清理資源。通過調(diào)用event_base_free()函數(shù)來釋放事件處理器占用的資源。

常用指令

指令描述
nc <host> <port>;創(chuàng)建TCP連接
nc -u <host> <port>創(chuàng)建UDP連接
nc -l <port>監(jiān)聽端口
nc <host> <port> < file發(fā)送文件,nc 127.0.0.1 8080 < file.txt
nc -l <port> > file接收文件,nc -l 8080 > file.txt
nc -zv <host> <start-port>-<end-port>端口掃描,nc -zv 127.0.0.1 1-100
netstat -tuln查看監(jiān)聽的TCP端口
ss -tuln查看監(jiān)聽的TCP端口
sudo iptables -L查看IPV4防火墻規(guī)則
sudo ip6tables -L查看IPV6防火墻規(guī)則

問題記錄

問題一:長連接的管理

通常情況下,客戶端和服務(wù)器端會維護一個連接池,用來管理多個長連接。在連接池中,每個連接都可以用一個唯一的標(biāo)識符(例如,連接編號、連接句柄、文件描述符等)來標(biāo)記,但這個標(biāo)識符不是由 TCP 協(xié)議自動分配的,而是由編程語言或操作系統(tǒng)提供的接口來生成。

問題二:連接關(guān)閉問題

1.任務(wù)結(jié)束的條件滿足,其中一方(通常是服務(wù)器端)發(fā)送任務(wù)結(jié)束信號給對方(客戶端)。
2.接收到任務(wù)結(jié)束信號的一方(客戶端)根據(jù)協(xié)議判斷任務(wù)結(jié)束,也可以在任務(wù)結(jié)束后發(fā)送任務(wù)結(jié)束確認(rèn)信號給對方(服務(wù)器端)。
3.雙方都知道任務(wù)結(jié)束后,可以分別在合適的時機主動關(guān)閉連接。

關(guān)閉連接的步驟是,主動關(guān)閉一方發(fā)送一個關(guān)閉連接的請求,等待對方確認(rèn)。對方接收到關(guān)閉請求后,確認(rèn)關(guān)閉并回復(fù)。然后雙方都可以關(guān)閉自己的連接。這樣可以保證雙方都在知情的情況下安全地關(guān)閉連接。需要注意的是,在某些特殊情況下,如果連接的關(guān)閉是由客戶端或服務(wù)器端中的某個程序意外終止或崩潰造成的,可能會導(dǎo)致連接未正確關(guān)閉。在這種情況下,可以使用心跳機制或超時機制來檢測連接的狀態(tài),并在連接空閑一段時間后自動關(guān)閉連接,以防止連接資源泄漏。

問題三:客戶端與服務(wù)器端存在多個TCP連接,數(shù)據(jù)發(fā)送是依次的還是并行的?

在客戶端與服務(wù)器端存在多個TCP連接的情況下,數(shù)據(jù)發(fā)送可以是依次的,也可以是并行的,具體取決于實現(xiàn)的方式和程序設(shè)計。
(1)依次發(fā)送:如果客戶端在處理數(shù)據(jù)發(fā)送時,使用一個連接發(fā)送完一個數(shù)據(jù)后再使用下一個連接發(fā)送下一個數(shù)據(jù),這種情況下數(shù)據(jù)發(fā)送是依次進行的??蛻舳嗽谔幚矶鄠€連接時,每個連接發(fā)送數(shù)據(jù)的過程是按順序進行的,即一個連接發(fā)送完后才會處理下一個連接發(fā)送。
(2)并行發(fā)送:如果客戶端在處理數(shù)據(jù)發(fā)送時,同時利用多個連接進行數(shù)據(jù)發(fā)送,這種情況下數(shù)據(jù)發(fā)送是并行進行的??蛻舳丝梢栽诙鄠€連接上同時發(fā)送數(shù)據(jù),不需要等待一個連接的數(shù)據(jù)發(fā)送完畢再處理下一個連接的數(shù)據(jù)發(fā)送。

http://www.risenshineclean.com/news/37331.html

相關(guān)文章:

  • 湛江網(wǎng)站設(shè)計模板視頻500個游戲推廣群
  • 網(wǎng)站互動營銷成人編程培訓(xùn)機構(gòu)排名前十
  • 融資是什么意思株洲seo優(yōu)化報價
  • 馬云1688網(wǎng)站在濮陽如何做圖片外鏈在線生成
  • 大型b2c網(wǎng)站開發(fā)百度推廣app下載官方
  • 怎么做領(lǐng)券網(wǎng)站上海知名seo公司
  • 電腦做網(wǎng)站電腦編程百度指數(shù)怎么提升
  • 手機視頻網(wǎng)站怎么做保定seo推廣公司
  • 尚云網(wǎng)站建設(shè)廣東網(wǎng)約車漲價
  • 可以做書的網(wǎng)站湘潭seo優(yōu)化
  • 網(wǎng)站建設(shè) 加強宣傳百度開戶資質(zhì)
  • 昆明網(wǎng)站建設(shè)_云南網(wǎng)站建設(shè)網(wǎng)頁設(shè)計制作
  • 服務(wù)器做兩個網(wǎng)站電視劇排行榜百度搜索風(fēng)云榜
  • 做網(wǎng)站需要哪些知識論述搜索引擎優(yōu)化的具體措施
  • asp網(wǎng)站建設(shè)實驗設(shè)計推廣軟文是什么意思
  • 論述制作網(wǎng)站的一般過程百度移動端關(guān)鍵詞優(yōu)化
  • title wordpress企業(yè)站seo價格
  • 網(wǎng)站建設(shè)包含哪些內(nèi)容巨量算數(shù)數(shù)據(jù)分析入口
  • 服務(wù)器網(wǎng)站部署嘉興網(wǎng)絡(luò)推廣
  • 好創(chuàng)意的設(shè)計網(wǎng)站最大免費廣告發(fā)布平臺
  • 找人做網(wǎng)站排名優(yōu)化山西seo排名廠家
  • 網(wǎng)站開發(fā)的著作權(quán)和版權(quán)進一步優(yōu)化落實
  • 教育網(wǎng)站賞析seo網(wǎng)站分析報告
  • 西安網(wǎng)站優(yōu)化百度seo推廣軟件
  • 英國有哪些做折扣的網(wǎng)站有哪些seo外包顧問
  • 免費發(fā)布招聘的網(wǎng)站愛站seo
  • html在wordpress中的作用刷關(guān)鍵詞優(yōu)化排名
  • 響應(yīng)式網(wǎng)站管理win7優(yōu)化軟件
  • 電子商務(wù)網(wǎng)站建設(shè)的一般步驟有重慶人力資源和社會保障網(wǎng)
  • wordpress的用戶名密碼網(wǎng)站優(yōu)化seo培