首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Windows Sockets:套接字通知機制完整解析

     編輯:關於C語言

套接字類別提供五個核心通知回調函式,框架於關鍵網路事件發生時自動呼叫,供開發者實作自訂響應邏輯:

通知函式觸發時機建議處理
OnReceive接收緩衝區有資料可讀呼叫 Receive 讀取資料
OnSend發送緩衝區可寫入呼叫 Send 發送資料
OnAccept監聽套接字有掛起連線請求呼叫 Accept 接受連線
OnConnect連線嘗試完成(成功或失敗)檢查錯誤碼,後續處理
OnClose對端套接字已關閉清理資源,關閉本端套接字

帶外資料通知:OnOutOfBandData

注意: OnOutOfBandData 通知接收端有「帶外資料」(Out-of-Band Data)到達。帶外通道為每對連線流式套接字提供的邏輯獨立通道,通常用於傳送緊急資料。MFC 支援帶外資料,但建議 CSocket 使用者另建套接字傳遞此類資料,CAsyncSocket 進階使用者可視需求使用。詳細規格請參閱 Platform SDK 文件。

衍生類別的實作策略

  • 衍生自 CAsyncSocket:必須 重寫關心事件的通知函式。
  • 衍生自 CSocket:可選擇性 重寫;若不重寫,預設不執行任何操作。
  • 直接使用 CSocket:通知函式預設為空實作。

通知函式非強制呼叫特定 API,您可用於追蹤進度、記錄 TRACE 訊息、更新 UI 等。實作範例請參考 MFC 範例 CHATTER、CHATSRVR。

CSocket 同步狀態下的通知排隊

執行 Receive/Send 等同步操作時,CSocket 進入同步狀態,其他套接字的通知將排隊等候。僅當當前同步操作完成、套接字恢復異步狀態時,排隊通知才會被處理。此機制避免重入與遞迴問題。

重要: CSocket 中 OnConnect 永不被呼叫。連線由 Connect 同步完成,完成時直接返回結果(成功/錯誤)。連線通知處理為 MFC 內部實作細節。

相關參考

  • MFC 參考文件中 CAsyncSocket 類別的各通知函式說明
  • Windows Sockets:使用 CAsyncSocket 類別
  • Windows Sockets:從套接字類別衍生
  • Windows Sockets:帶存檔套接字的運作原理
  • Windows Sockets:阻塞
  • Windows Sockets:位元組順序
  • Windows Sockets:字串轉換
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved