- MFC 教程
- MFC - 首頁
- MFC - 概述
- MFC - 環境設定
- MFC - VC++ 專案
- MFC - 開始
- MFC - Windows 基礎
- MFC - 對話方塊
- MFC - Windows 資源
- MFC - 屬性表
- MFC - Windows 佈局
- MFC - 控制元件管理
- MFC - Windows 控制元件
- MFC - 訊息和事件
- MFC - ActiveX 控制元件
- MFC - 檔案系統
- MFC - 標準 I/O
- MFC - 文件檢視
- MFC - 字串
- MFC - CArray
- MFC - 連結串列
- MFC - 資料庫類
- MFC - 序列化
- MFC - 多執行緒
- MFC - 網際網路程式設計
- MFC - GDI
- MFC - 庫
- MFC 有用資源
- MFC - 快速指南
- MFC - 有用資源
- MFC - 討論
MFC - 網際網路程式設計
Microsoft 提供了許多用於程式設計客戶端和伺服器應用程式的 API。許多新的應用程式正在為網際網路編寫,並且隨著技術、瀏覽器功能和安全選項的變化,將編寫新型的應用程式。您的自定義應用程式可以檢索資訊並在網際網路上提供資料。
MFC 提供了一個CSocket類,用於使用 Windows Sockets 編寫網路通訊程式。
以下是 CSocket 類中的方法列表。
| 序號 | 名稱和描述 |
|---|---|
| 1 | Attach 將 SOCKET 控制代碼附加到 CSocket 物件。 |
| 2 | CancelBlockingCall 取消當前正在進行的阻塞呼叫。 |
| 3 | Create 建立一個套接字。 |
| 4 | FromHandle 給定 SOCKET 控制代碼,返回指向 CSocket 物件的指標。 |
| 5 | IsBlocking 確定是否正在進行阻塞呼叫。 |
讓我們透過建立一個 MFS SDI 應用程式來了解一個簡單的示例。
步驟 1 - 在名稱欄位中輸入 MFCServer 並單擊確定。
步驟 2 - 在“高階功能”選項卡上,選中“Windows 套接字”選項。
步驟 3 - 建立專案後,新增一個新的 MFC 類 CServerSocket。
步驟 4 - 選擇 CSocket 作為基類,然後單擊“完成”。
步驟 5 - 新增更多 MFC 類 CReceivingSocket。
步驟 6 - CRecevingSocket 將接收來自客戶端的傳入訊息。
在 CMFCServerApp 中,標頭檔案包含以下檔案:
#include "ServerSocket.h" #include "MFCServerView.h"
步驟 7 - 在 CMFCServerApp 類中新增以下兩個類變數。
CServerSocket m_serverSocket; CMFCServerView m_pServerView;
步驟 8 - 在 CMFCServerApp::InitInstance() 方法中,建立套接字並指定埠,然後呼叫 Listen 方法,如下所示。
m_serverSocket.Create(6666); m_serverSocket.Listen();
步驟 9 - 在 CMFCServerView 標頭檔案中包含以下標頭檔案。
#include "MFCServerDoc.h"
步驟 10 - 從 Socket 類覆蓋 OnAccept 函式。
步驟 11 - 在類檢視中選擇 CServerSocket 和屬性視窗中的突出顯示的圖示。現在,新增 OnAccept。以下是 OnAccept 函式的實現。
void CServerSocket::OnAccept(int nErrorCode) {
// TODO: Add your specialized code here and/or call the base class
AfxMessageBox(L"Connection accepted");
CSocket::OnAccept(nErrorCode);
}
步驟 12 - 新增 OnReceive() 函式。
void CServerSocket::OnReceive(int nErrorCode) {
// TODO: Add your specialized code here and/or call the base class
AfxMessageBox(L"Data Received");
CSocket::OnReceive(nErrorCode);
}
步驟 13 - 在 CReceivingSocket 類中新增 OnReceive() 函式。
在解決方案資源管理器中右鍵單擊 CMFCServerView 類,然後選擇“新增”→“新增函式”。
步驟 14 - 輸入上述資訊,然後單擊“完成”。
步驟 15 - 在 CMFCServerView 標頭檔案中新增以下 CStringArray 變數。
CStringArray m_msgArray;
步驟 16 - 以下是 AddMsg() 函式的實現。
void CMFCServerView::AddMsg(CString message) {
m_msgArray.Add(message);
Invalidate();
}
步驟 17 - 更新建構函式,如下面的程式碼所示。
CMFCServerView::CMFCServerView() {
((CMFCServerApp*)AfxGetApp()) -> m_pServerView = this;
}
步驟 18 - 以下是 OnDraw() 函式的實現,該函式顯示訊息。
void CMFCServerView::OnDraw(CDC* pDC) {
int y = 100;
for (int i = 0; m_msgArray.GetSize(); i++) {
pDC->TextOut(100, y, m_msgArray.GetAt(i));
y += 50;
}
CMFCServerDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
// TODO: add draw code for native data here
}
步驟 19 - 伺服器端現在已完成。它將接收來自客戶端的訊息。
建立客戶端應用程式
步驟 1 - 讓我們為客戶端應用程式建立一個新的基於 MFC 對話方塊的應用程式。
步驟 2 - 在“高階功能”選項卡上,選中“Windows 套接字”選項,如上所示。
步驟 3 - 建立專案後,設計您的對話方塊,如下面的快照所示。
步驟 4 - 為“連線”和“傳送”按鈕新增事件處理程式。
步驟 5 - 為所有三個編輯控制元件新增值變數。對於埠編輯控制元件,選擇變數型別 UINT。
步驟 6 - 新增用於連線和傳送訊息的 MFC 類。
步驟 7 - 在標頭檔案 CMFCClientDemoApp 類中包含 CClientSocket 類的標頭檔案並新增類變數。同樣,也在 CMFCClientDemoDlg 標頭檔案中新增類變數。
CClientSocket m_clientSocket;
步驟 8 - 以下是“連線”按鈕事件處理程式的實現。
void CMFCClientDemoDlg::OnBnClickedButtonConnect() {
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_clientSocket.Create();
if (m_clientSocket.Connect(m_ipAddress, m_port)) {
AfxMessageBox(L"Connection Successfull");
}else {
AfxMessageBox(L"Connection Failed");
}
DWORD error = GetLastError();
}
步驟 9 - 以下是“傳送”按鈕事件處理程式的實現。
void CMFCClientDemoDlg::OnBnClickedButtonSend() {
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if (m_clientSocket.Send(m_message.GetBuffer(m_message.GetLength()), m_message.GetLength())) {
}else {
AfxMessageBox(L"Failed to send message");
}
}
步驟 10 - 首先執行伺服器應用程式,然後執行客戶端應用程式。輸入本地主機 IP 和埠,然後單擊“連線”。
步驟 11 - 您現在將在伺服器端看到訊息,如下面的快照所示。