網路程式設計 Linux高效能伺服器程式設計閱讀日記

2021-10-08 17:32:11 字數 1414 閱讀 2202

eopll,lt水平觸發和et邊緣觸發的區別,寫了個簡單的伺服器**測試了一下

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define max_event_number 1024

#define buffer_size 10

//將檔案描述符設定成非阻塞的

intsetnonblocking

(int fd)

void

addfd

(int epollfd,

int fd,bool enable_et)

void

lt(epoll_event* events,

int number,

int epollfd,

int listenfd)

else

if(events[i]

.events&epollin)

printf

("get %d bytes of content:%s\n"

,ret,buf);}

else

printf()

;}}void

et(epoll_event* events,

int number,

int epollfd,

int listenfd)

else

if(events[i]

.events&epollin)

close

(sockfd)

;break;}

else

if(ret==0)

close

(sockfd)

;else

printf

("get %d bytes of content:%s\n"

,ret,buf);}

}else

printf()

;}}int

main

(int argc,

char

* ar**)

et(events,ret,epollfd,listenfd);}

}

telnet模擬http請求傳送給服務端可以發現,傳送超過十個字元的請求的時候兩種模式的處理方式不同,lt模式未讀取完成則還可以繼續觸發epoll事件,et模式必須每次有io請求就迴圈讀取結束為止,否則下次不會再觸發epoll事件。

看起來是lt模式比較智慧型,但是實際上,et模式效率比較高,因為讀取io請求只需要觸發一次。

linux高效能伺服器程式設計

linux高效能伺服器程式設計 當當網 亞馬遜 目錄 第一章 tcp ip協議族 第二章 ip協議族 第三章 tcp協議詳解 第四章 tcp ip通訊案例 訪問internet 第五章 linux網路程式設計基礎api 第六章 高階io函式 第七章 linux伺服器程式規範 第八章 高效能伺服器框架...

linux 高效能伺服器程式設計

1.高效能定時器 時間輪,時間堆 處理超時時間,如nginx使用紅黑樹,找出最可能超時的事件 2.高效能伺服器程式框架 nginx 使用的是基於事件模型,epoll,不阻塞,非同步處理 兩種高效的事件處理模式 reactor模式 proactor模式 兩種高效的併發模式 半同步 半非同步模式 領導者...

《Linux高效能伺服器程式設計》 1 4 測試網路

為了深入理解網路通訊和網路程式設計,我們準備了圖1 8所示的測試網路,其中包括兩台主機a和b,以及乙個連線到網際網路的路由器。後文如沒有特別宣告,所有測試硬體指的都是該網路。我們將使用機器名來標識測試機器。該測試網路主要用於分析arp協議 ip協議 icmp協議 tcp協議和dns協議。我們通過抓取...