深入理解WSAAsyncselect網絡模型

---------------------------------------------------異步選擇模型----------------------------------------------------------

異步選擇模型:異步選擇模型是windows的一種異步IO模型,主要是通過windows消息機制實現的。通過WSAAsyncSelectSOCKET註冊感興趣的事件,並綁定對應的消息。當SOCKET有對應的事件發生時,內核會向窗口發送自定義消息。我們在對應的消息處理函數中,就可以處理相關的網絡連接。

 WSAAsyncSelect是select模型的異步版本.

 

MFC程序實現:

//1.創建一個窗口類,繼承自窗口類

//2.使用類創建出窗口

//3.使用WSAAsyncSelect,給監聽SOCKET註冊網絡事件FD_ACCEPT,並將自定義消息,和創建的窗口的句柄作爲參數,傳遞給註冊函數。

//4.在自定窗口類中,自定義消息處理函數

//5.在消息處理函數中

The wParam parameter identifies the socket on which a network event has occurred. The low word of lParam specifies the network event that has occurred. The high word of lParam contains any error code. 

//6.我們通過對lparam低位進行判斷,就可以知道發生了什麼網絡事件。通過wparam參數,我們可以知道網絡事件發生在那個套接字上。

//7.如果給一個套接字註冊多個網絡事件,切記一定要使用|(按位或),一次全部註冊。

根據,自己犯過的錯誤,可以推測,如果不一次全部註冊,後面的事件會覆蓋前面的事件。

//8.調用WSAAsyncSelect之後,默認會將套接字屬性設置爲非阻塞模式。(在非阻塞模式下recv會立即返回一個錯誤碼,需要自己反覆調用直到有可讀數據爲止。)(經過試驗認證,確實recv變成了非阻塞的)

 

 

它的優勢,主要就是是一種異步IO模型。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章