周亞文 河南大學
就TCP/IP協議來講,它是一個開放的網絡協議體系,在利用TCP/IP 協議的網絡操作系統中,不同的應用程序可以通過網絡編程接口套接字( Socket)與其下層核心協議通信。而大部分Windows應用程序框架來源于MFC,定義了應用程序的結構,實現了應用程序的公共部分,封裝了大部分的Windws API 函數,降低了編程難度,大大地提高了應用程序的開發速度和質量。本文討論的客戶端服務器通信的設計與實現方法很好地詮釋了Socket通信的原理。
MFC是一個編程框架。
MFC應用程序框架,簡稱MFC框架,是由MFC(Microsoft Foundation Class Library)中的各種類結合起來構成的。MFC框架從總體上定義了應用程序的輪廓,并提供了用戶接口的標準實現方法,程序員只須通過預定義的接口把具體應用程序特有的東西填入這個輪廓,就能建立Windows下的應用程序。MFC 中所有的類都來源于一個基類:CObject。
選定WINDOWS平臺開發網絡通信程序,可以選擇WINDOWS的SOCKETS編 程 接 口,Windows Sockets是 一套開放的、支持多種協議的Windows下的網絡編程接口。現在的Winsock已經基本上實現了與協議無關,可以使用Winsock來調用多種協議的功能,但較常使用的是TCP/IP協議。
C/S結構軟件分為客戶機和服務器兩層,客戶機不是毫無運算能力的輸入、輸出設備,而是具有了一定的數據處理和數據存儲能力,通過把應用軟件的計算和數據合理地分配在客戶機和服務器兩端,可以有效地降低網絡通信量和服務器運算量。
C/S結構的優點是能充分發揮客戶端PC的處理能力,很多工作可以在客戶端處理后再提交給服務器。對應的優點就是客戶端響應速度快。
3.1.1 服務器端應用程序的創建:
(1)使用MFC AppWizard創建服務器端應用程序框架。
創建一個工程名為Server,選擇 Dialog based 的應用程序類型,選擇中文(中國),選擇Windows Sockets支持,其他接受系統默認值。所創建的程序將自動創建兩個類,應用程序類ServerApp,對應的文件是Server.cpp 和 Server.h;對話框類 ServerDlg,對應的文件是ServerDlg.cpp 和 ServerDlg.h。
(2)為對話框界面添加控件對象
在創建了應用程序框架之后,可以布置程序的主對話框。在Visual Studio 的“SolutionExplorer(解決方案資源管理器)”(可通過 View-SolutionExplorer 調出)中選擇“ResourceFiles”并通過單擊展開,雙擊后綴為.rc 的文件,在出現的界面中展開 Dialog,雙擊其中的 IDD_DIALOG,便會出現圖形界面的可視化設計窗口以及圖形界面控件面板,利用控件面板可以方便地在程序的主對話框界面中添加相應的可視控件對象。添加相應的控件對象。
(3)為對話框中的控件對象定義相應的成員變量
在窗口菜單中選擇“Project(項目)”/“Class Wizard(類向導)”命令,進入“MFC ClassWizard”(類向導)對話框,將Class name通過下拉列表勾選為ServerDlg,然后選擇“Member Variables”(成員變量)選項卡,用類向導為對話框中的控件對象定義相應的成員變量。在左邊的列表框中選擇一個控件,然后單擊“Add Variable”(添加變量)按鈕,會彈出“Add Member Variable”(添加成員變量)對話框,根據需要進行定義。
打開服務器, 輸入端口號(1000),點擊“OPEN”按鈕開啟服務器。這時服務器對話框中顯示“服務已經開啟!”;接著打開客戶端,輸入IP(192.168.43.204)和相應的端口號(1000),該端口號必須和服務器端口號一致,否則無法連接服務器,在客戶端對話框中輸入所要發送的消息,最后點擊“send”按鈕,在服務器對話框中就可以看到客戶端發送的文本消息。