在 MFC 應用程式中實現網路通訊是許多初學者面臨的挑戰。本文將詳細說明如何使用 MFC 的 CSocket 類別,建立一個簡單的商家端(伺服器)與客戶端(客戶)通訊範例,涵蓋標頭檔引入、關鍵函式覆寫、監聽與連線流程,並提供完整的程式碼架構供參考。
在專案的 stdafx.h 或對應的標頭檔中,務必包含 <afxsock.h> 並連結 ws2_32.lib。接著分別建立兩個衍生類別:
CAsyncSocket,覆寫 OnAccept 處理新連線請求。CAsyncSocket,覆寫 OnConnect、OnReceive、OnClose 等事件。CListenSocket m_listenSocket; 成員變數。OnInitDialog 中呼叫 m_listenSocket.Create(port) 並 m_listenSocket.Listen() 開始監聽。OnAccept:當有客戶端連線時,建立新的 CClientSocket 物件,呼叫 Accept(*pClientSocket),並將該物件存入陣列或列表以便後續收發資料。CClientSocket m_clientSocket;。m_clientSocket.Create() 並 m_clientSocket.Connect(serverIP, port)。OnConnect 會被觸發,此時可啟用發送介面;OnReceive 用於讀取伺服器回傳資料;OnClose 處理斷線清理。// 發送
CString strMsg = _T("Hello Server");
m_clientSocket.Send(strMsg.GetBuffer(), strMsg.GetLength());
// 接收(OnReceive 中)
char buffer[1024];
int nRead = m_clientSocket.Receive(buffer, sizeof(buffer));
if (nRead > 0) {
CString strRecv(buffer, nRead);
// 更新 UI 顯示
}
Listen。掌握 CAsyncSocket 的事件驅動機制,配合正確的建立/監聽/連線流程,即可快速完成 MFC 網路通訊模組。建議先從單一客戶端測試,再擴充至多客戶端管理與心跳檢測機制。