OnSocketNotify回調CAsyncSocket的成員函式DoCallBack,DoCallBack調用事件處理函式,如OnRead、OnWrite等。摘錄DoCallBack的一段代碼如下:
switch (WSAGETSELECTEVENT(lParam))
{
case FD_READ:
{
DWORD nBytes;
//得到可以一次讀取的位元組數
pSocket->IOCtl(FIONREAD, &nBytes);
if (nBytes != 0)
pSocket->OnReceive(nErrorCode);
}
break;
case FD_WRITE:
pSocket->OnSend(nErrorCode);
break;
case FD_OOB:
pSocket->OnOutOfBandData(nErrorCode);
break;
case FD_ACCEPT:
pSocket->OnAccept(nErrorCode);
break;
case FD_CONNECT:
pSocket->OnConnect(nErrorCode);
break;
case FD_CLOSE:
pSocket->OnClose(nErrorCode);
break;
lParam是WM_SOCKET_NOFITY的訊息參數,OnSocketNotify傳遞給函式DoCallBack,表示通知事件。
函式IOCtl是CAsyncSocket的成員函式,用來對socket的I/O進行控制。這裡的使用表示本次調用Receive函式至多可以讀nBytes個位元組。
從上面的討論可以看出,從創建socket到網路I/O,CAsyncSocket直接封裝了低層的WinSock API,簡化了WinSock編程,實現了一個異步操作的界面。如果希望某個操作是阻塞操作,則在調用Create時不要指定該操作對應的網路事件。例如,希望Connect和Send是阻塞操作,在任務完成之後才返回,則可以使用如下的語句:
pSocket->Create(0, SOCK_STREAM,
FR_WRITE|FR_OOB|FR_ACCEPT|FR_CLOSE);
這樣,在Connect和Send時,如果是用戶界面執行緒的話,可能阻塞執行緒訊息循環。所以,最好在工作者執行緒中使用阻塞操作。
相關詞條
-
異步調用
asynchronous call(異步調用) 一個可以無需等待被調用函式的返回值就讓操作繼續進行的方法
舉例 實戰用法 異步調用使用方法 -
異步動態系統
異步動態系統(Asynchronous dynamical systems)是指同時具有異步系統和動態系統特徵的資料庫系統。即系統狀態隨時間而變化的系統...
異構資料庫系統 動態系統 資料庫轉換 數據的透明訪問 -
異步選擇機制
異步選擇機制指的是調用允許應用程式程式註冊一個或多個感興趣的網路事件。
簡介 技術要求 -
JavaScript異步編程
《JavaScript異步編程:設計快速回響的網路套用》適合JavaScript開發人員閱讀。 另著有《深入淺出CoffeeScript》。 深入理解J...
內容介紹 作者介紹 作品目錄 -
CAsyncSocket異步機制
環境,而AfxSocketIn 一條訊息給CSocketWn d作為報告,CSocketWn
-
網路傳播學
網路傳播學是研究人類網路傳播活動的系統學科。是傳播學的一個分支,是傳播學的子學科。網路傳播學是一門新興的邊緣性學科,是傳播學的一個分支,伴隨著網路的飛速...
學科分類 誕生背景 建立必要性 介紹 研究對象 -
異構網路
異構網路(Heterogeneous Network)是一種類型的網路,其是由不同製造商生產的計算機,網路設備和系統組成的,大部分情況下運行在不同的協定...
介紹 異構網路的背景介紹 異構網路模型 異構網路中無線資源管理技術 網路選擇算法的研究 -
SAN[存儲區域網路]
存儲區域網路(Storage Area Network and SAN Protocols,簡寫SAN,即存儲區域網路及其協定)是一種高速網路或子網路,...
SAN 簡介 -
網路教學
網路教學是在一定教學理論和思想指導下,套用多媒體和網路技術,通過師、生、媒體等多邊、多向互動和對多種媒體教學信息的收集、傳輸、處理、共享,來實現教學目標...
原則 模式 技術問題 特點 優勢