本人工作是服務端效能測試,因工作需要開發機械人框架,選用底層的時候看到網上滿大街的iocp介紹,還有說iocp比wsaasyncselect複雜等等,所以只好轉wsaasyncselect實現。
因併發客戶端需要進行除錯測試,壓力測試工具作為客戶端來說效能十分重要,沒有經過測試的鬼知道秒併發多少請求,秒併發多少connect,所以就需要實現高效服務端進行除錯客戶端,在工作之餘又繼續研究iocp,吐槽這些無非就是,沒人想過怎麼優化精簡流程,生搬硬套實現iocp的處理,其實可以利用msg和簡單iocp模型簡單實現。
下圖介紹如何簡單實現流程,就那麼簡單也不需要用到記憶體池,**參考「windows網路與通訊程式設計王艷平」第四章 iocpdemo,iocpsys這個做了太多處理,建議大家還是從iocpdemo著手優化精簡方案,
主要用到的api有一下2個,其餘的api和wsaasyncselect沒多大區別,呼叫wsasend、wsarecv等
iocp之簡單實現
1 標頭檔案 include include ifdef windows pragma comment lib,ws2 32.lib socket程式設計需用的動態鏈結庫 pragma comment lib,kernel32.lib iocp需要用到的動態鏈結庫 endif log view lo...
簡單的iocp例子
include include include include include using namespace std define i port 1666 define i addr 0.0.0.0 define dft buffer size 4096 define opt read 0 def...
IOCP 實現的基本步驟
呼叫iocp的步驟如下 抽象出乙個完成埠大概的處理流程 1 建立乙個完成埠。2 建立乙個執行緒a 3 a執行緒迴圈呼叫getqueuedcompletionstatus 函式來得到i o操作結果,這個函式是阻塞函式 4 主線程迴圈裡呼叫accept等待客戶端連線上來。5 主線程裡accept返回新連...