當建立iocp埠後,就要初始化連線監聽,這跟一般的socket是沒有什麼區別的,當然要把它關聯到iocp,否則就不會從iocp那裡得響應. 接著就會建立滿足需要的接收請求,這樣就會收到連線進來.
如果有連線進來,就會收在getqueued***pletionstatus函式裡收到前面發出的請求包,接著就進行資料監聽,或者數傳送的請求.就可以進行這個連線的資料收發了.
我一直想搞清楚幾個狀態之間的變換.第乙個就是從監聽狀態到連線進來,再到資料傳送.然後到連線關閉.在iocp裡是怎麼樣來標誌乙個連線關閉呢?
通過查詢msdn幫助文件,看了不少資料,終於找到了. 要標誌乙個連線關閉,要檢視兩個東西,乙個getqueued***pletionstatus函式就是接收到的資料lpnumberofbytes為0,另一外就是getlasterror函式返回error_success. 上面兩個條件滿足後,就知道socket關閉了.
IOCP 完成埠 開發手記 3
當建立iocp埠後,就要初始化連線監聽,這跟一般的socket是沒有什麼區別的,當然要把它關聯到iocp,否則就不會從iocp那裡得響應.接著就會建立滿足需要的接收請求,這樣就會收到連線進來.如果有連線進來,就會收在getqueuedcompletionstatus函式裡收到前面發出的請求包,接著就...
IOCP 完成埠 開發手記 4
使用 iocp 有什麼優點呢?首先它是使用執行緒池的方法。在建立 iocp 時,就要設定有多少併發執行緒。在呼叫createio pletionport 函式建立 iocp 時,就要設定多少執行緒併發執行。如果設定 numberofconcurrentthreads 引數為0 就是讓併發的執行緒數跟...
IOCP 完成埠 開發手記 4
使用iocp有什麼優點呢?首先它是使用執行緒池的方法。在建立iocp時,就要設定有多少併發執行緒。在呼叫createiocompletionport函式建立iocp時,就要設定多少執行緒併發執行。如果設定numberofconcurrentthreads 引數為0,就是讓併發的執行緒數跟cpu個數一...