IOCP模型TCP伺服器

2021-09-09 03:00:03 字數 992 閱讀 5141

主線程建立監聽套接字,建立額外工作執行緒,關聯iocp,負責等待和接受到來的連線。

呼叫getqueuedcompletionstatus函數,函式返回:

1 呼叫失敗

2 套接字被對方關閉

3 請求成功完成

程式首先定義per-handleper-io的運算元據的結構型別

#define buffer_size 1024typedef 

struct

_per_handle_dataper_handle_data,*pper_handle_data;

typedef

struct

_per_io_dataper_io_data,*pper_io_data;

主要過程:

1 主線程建立完成埠物件,建立工作執行緒處理完成埠物件中的事件

2 建立監聽套接字,開始監聽伺服器端口

3 進入無限迴圈,處理到來的請求

1)呼叫accept函式等待接受未決的連線請求   2)建立乙個per-handle資料   3)投遞乙個接收請求

實現**:

void

main()

}dword winapi serverthread(lpvoid lpparam

if(dwtrans == 0 && (pperio->noperationtype==op_read||pperio->noperationtype==op_write))

switch(pperio->noperationtype)

break

;

case

op_write:

case

op_accept:

break

; }

}return0;

}

簡單的使用 IOCP 模型的 TCP 伺服器例子

例子中有兩種型別的執行緒 主線程和它建立的執行緒。主線程建立監聽套接字,建立額外的工作執行緒,關聯 iocp 負責等待和接受到來的連線等。由主線程建立的執行緒負責處理 i o事件,這些執行緒呼叫 getqueuedcompletionstatus 函式在完成埠物件上等待完成的 i o操作。getqu...

TCP伺服器模型

迴圈伺服器 迴圈伺服器在同乙個時刻只可以響應乙個客戶端的請求 併發伺服器 併發伺服器在同乙個時刻可以響應多個客戶端的請求 9.1 迴圈伺服器 udp伺服器 udp迴圈伺服器的實現非常簡單 udp伺服器每次從套接字上讀取乙個客戶端的請求,處理,然後將結果返回給客戶機.可以用下面的演算法來實現.sock...

TCP併發伺服器模型(一)

本篇敘述的tcp併發伺服器模型如下圖所示 伺服器建立並繫結套接字後fork出幾個子程序,子程序中分別進行accept 該函式為阻塞函式 recv 處理資料然後再次acept,這樣迴圈下去。所有客戶端發來的資訊都是直接由子程序處理。例程 如下,在處理客戶端請求之前,伺服器先fork了3個子程序,然後將...