共用方式為


Windows Sockets:通訊端告知

本文說明通訊端類別中的通知函式。 這些成員函式是架構呼叫以通知您通訊端物件重要事件的回呼函式。 通知函式如下:

  • OnReceive :通知此通訊端,緩衝區中有資料可藉由呼叫 Receive 來擷取。

  • OnSend :通知此通訊端,它現在可以藉由呼叫 Send 來 傳送資料。

  • OnAccept :通知此接聽通訊端,它可藉由呼叫 Accept 來接受擱置的連線要求。

  • 開啟連線 :通知此連線通訊端其連線嘗試已完成:可能是成功或發生錯誤。

  • OnClose :通知此通訊端已連線的通訊端已關閉。

    注意

    其他通知函式是 OnOutOfBandData 。 此通知會告知接收通訊端傳送通訊端有要傳送的「頻外」資料。 頻外資料是與每個連線串流通訊端配對相關聯的邏輯獨立通道。 頻外通道通常用來傳送「緊急」資料。 MFC 支援頻外資料。 使用 CAsyncSocket 類別 的進階使用者可能需要使用頻外通道,但不建議使用 CSocket 類別 的使用者。 最簡單的方式是建立第二個通訊端來傳遞這類資料。 如需頻外資料的詳細資訊,請參閱 Windows SDK 中提供的 Windows 通訊端規格。

如果您衍生自 類別 CAsyncSocket ,則必須覆寫應用程式感興趣的網路事件的通知函式。 如果您從 類別 CSocket 衍生類別,您可以選擇是否覆寫感興趣的通知函式。 您也可以使用 CSocket 本身,在此情況下,通知函式預設不會執行任何動作。

這些函式是可覆寫的回呼函式。 CAsyncSocket 並將 CSocket 訊息轉換成通知,但如果您想要使用通知,則必須實作通知函式的回應方式。 當通訊端收到感興趣的事件通知時,會呼叫通知函式,例如要讀取的資料。

MFC 會呼叫通知函式,讓您在收到通知時自訂通訊端的行為。 例如,您可能會從通知 OnReceive 函式呼叫 Receive ,也就是說,在收到有要讀取資料的通知時,您可以呼叫 Receive 來讀取它。 這種方法並非必要,但這是有效的案例。 或者,您可以使用通知函式來追蹤進度、列印 TRACE 訊息等等。

您可以覆寫衍生通訊端類別中的通知函式並提供實作,以利用這些通知。

在接收或傳送資料等作業期間, CSocket 物件會變成同步。 在同步狀態期間,用於其他通訊端的任何通知會排入佇列,而目前的通訊端會等候想要的通知。 (例如,在 Receive 呼叫期間,通訊端想要讀取通知。通訊端完成其同步作業並再次變成非同步之後,其他通訊端就可以開始接收已排入佇列的通知。

注意

在 中 CSocketOnConnect 永遠不會呼叫通知函式。 針對連線,您會呼叫 Connect ,這會在連線完成時傳回 (成功或發生錯誤)。 如何處理連線通知是 MFC 實作詳細資料。

如需每個通知函式的詳細資訊,請參閱 MFC 參考 中的 類別 CAsyncSocket 底下函式。 如需原始程式碼和 MFC 範例的相關資訊,請參閱 MFC 範例

如需詳細資訊,請參閱

另請參閱

MFC 中的 Windows Sockets