IOCP模型與網路程式設計

2021-09-21 12:37:01 字數 1149 閱讀 6840

一。前言:

在老師分配任務(「嘗試利用iocp模型寫出服務端和客戶端的**」)給我時,腦子一片空白,並不知道什麼是iocp模型,會不會是像軟體設計模式裡面的工廠模式,裝飾模式之類的那些呢?嘿嘿,不過好像是乙個挺好玩的東西,挺好奇是什麼東西來的,又是乙個新知識啦~於是,開始去尋找一大堆的資料,為這個了解做準備,只是呢,有時還是想去找一本書去系統地學習一下,畢竟網路的資料還是有點零散。話說,本人學習這個模型的基礎是,寫過乙個簡單的socket伺服器及客戶端程式,外加乙個簡單的socket單伺服器對多客戶端程式,懂一點點的作業系統原理的知識。於是,本著乙個學習與應用的態度開始**這個iocp是個什麼東西。

二。提出相關問題:

1.  iocp模型是什麼?

2.  iocp模型是用來解決什麼問題的?它為什麼存在?

3.  使用iocp模型需要用到哪些知識?

4.  如何使用iocp模型與socket網路程式設計結合起來?

5.  學會了這個模型以後與我之前寫過的簡單的socket程式主要有哪些不同點?

三。部分問題**及解決:(絕大多數是個人理解,再加上個人是菜鳥,如果有什麼不對的地方,歡迎指正)

1.  什麼是iocp?什麼是iocp模型?iocp模型有什麼作用?

1) iocp(i/o completion port),常稱i/o完成埠。

2) iocp模型屬於一種通訊模型,適用於(能控制併發執行的)高負載伺服器的乙個技術。

3) 通俗一點說,就是用於高效處理很多很多的客戶端進行資料交換的乙個模型。

4) 或者可以說,就是能非同步i/o操作的模型。

5) 只是了解到這些會讓人很糊塗,因為還是不知道它究意具體是個什麼東東呢?

下面我想給大家看三個圖:

第乙個是iocp的內部工作佇列圖。(整合於《iocp本質論》文章,在英文的基礎上加上中文對照)

第二個是程式實現iocp模型的基本步驟。(整合於《深入解釋iocp》,加個人觀點、理解、翻譯)

網路程式設計 完成埠IOCP

分類 網路程式設計 2009 12 31 11 20 755人閱讀收藏 舉報 裝置 windows作業系統上允許通訊的任何東西,比如檔案 目錄 序列口 並行口 郵件槽 命名管道 無名管道 套接字 控制台 邏輯磁碟 物理磁碟等。絕大多數與裝置打交道的函式都是createfile readfile wr...

IOCP模型與EPOLL模型的比較

一 iocp和epoll之間的異同。異 1 iocp是windows系統下使用。epoll是linux系統下使用。2 iocp是io操作完畢之後,通過get函式獲得乙個完成的事件通知。epoll是當你希望進行乙個io操作時,向epoll查詢是否可讀或者可寫,若處於可讀或可寫狀態後,epoll會通過e...

IOCP模型總結

呼叫的步驟如下 抽象出乙個完成埠大概的處理流程 1 建立乙個完成埠。2 建立乙個執行緒a。3 a執行緒迴圈呼叫getqueuedcompletionstatus 函式來得到io操作結果,這個函式是個阻塞函式。4 主線程迴圈裡呼叫accept等待客戶端連線上來。5 主線程裡accept返回新連線建立以...