我參考了大多數的資料都是說完成埠接收資料的,一旦我開始嘗試發送資料就有幾個問題,第一是不知道什么模式,我是在作業執行緒之外呼叫WSASend其他不管,還是用什么函式給到GetQueuedCompletionStatus里讓作業執行緒來完成WSASend。第二是實際使用WSASend函式的時候我需要給這一次發送構造對應的IO結構體和句柄結構體這樣一來就需要申請記憶體那豈不是每一次發送資料都需要申請記憶體這些記憶體什么時候釋放、怎么釋放。
uj5u.com熱心網友回復:
完成埠是win通信最復雜的但又是最高效的一種機制,如果對其機理沒有清楚的了解和理解,是比較難于做好的,建議,先找先關的資料學習一下uj5u.com熱心網友回復:
http://bbs.csdn.net/topics/392070135uj5u.com熱心網友回復:

勿在浮沙筑高臺。
iocp需要深刻的理解windows的iocp機制。
uj5u.com熱心網友回復:
不是,就是在學習IOCP的時候發現這個問題不知道怎么搞,怎么上來都勸我不要學呀uj5u.com熱心網友回復:
IOCP的資料處理,都是先投遞,后處理
所以WSASend的時候,就需要申請記憶體,申請成功后攜帶發送的資料投遞
然后在GetQueuedCompletionStatus中接收到資料處理結果,釋放申請的記憶體
這一塊推薦構建個物件池,盡量復用投遞物件,
提交效率也減少記憶體碎片
當然因為涉及多執行緒,物件池加鎖是少不了的
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/73875.html
標籤:網絡編程
上一篇:求高效讀取螢屏區域像素值完整代碼
下一篇:各位大神求指導!用MFC做一個界面,下位機每隔一秒通過串口傳資料到上位機,現在能接收到資料,要想根據這些資料實時的畫矩形,是如何呼叫onpaint函式啊
