?? d106.bmp.txt
字號:
這里需要注意的是,CArchive對象只能單向傳遞數據:載入(接收)或者存儲(發送)。
在某些情況下,用戶必須使用兩個CArchive對象,一個進行數據接收,一個進行數據發送。
具體的數據的傳輸過程如圖3-22所示。
aR器 li戶
CArchive CSocketFile CSocket lIl CSocket CSocketFile CArchive
呼K
接收數據
I
CArchive CSocketFile CSocket I CSocket CSocketFile CArchive
剛n
接收數據 網絡; 發送數據
圖3-22數據在CArchive、CSocketFile和CSocket對象間的傳輸過程
對于套接字而言,CArchive對象與CSocketFile對象相關。CSocketFile對象連接一個
CSocket對象,一個CArchive對象將負責管理一個緩沖區,它特別為CSocket提供的
IsBufferEmpty成員函數。當storing(發送)CArchive對象的緩沖區被填滿時,相關的CSocketFile
對象將緩沖區的內容取走,當loading(接收)CArchive對象的緩沖區被填滿時,將接收數
據的通告可能祓無線延遲,此時CSocketFile對象停止讀出直到緩沖區可用。
3.4.2開發步驟
本節通過一個實例來具體介紹基于CSocket類的網絡編程應用,具體程序源代碼見隨書
光盤“Chapter 3\Example 6\”。
下面通過一個Visual C++環境下編寫的客戶機/服務器模式的網絡應用程序,實現對
CSocket類的派生和應用。
(1)利用MFCAppWizard生成程序框架
建立基于對話框構架的應用程序,填寫工程名為“LANChat”。由于調用CSocket類需
要用到頭文件afxsock.h,所以在第2步(Step 2)中選中“Windows Socket”復選框,其他
接受默認的MFC AppWizard設置即可,或者在stdafx.h中添加#include <afxsock.h>。這個與
3.3.2節介紹的實例的情況相同,在這里就不再具體說明了。
(2)增加控件對象
1)向主對話框添加控件。
該應用程序是客戶機/服務器一體的,因此主對話框設計內容如下:一組(兩個)單
選按鈕(Radio Button)控件來指定應用程序是作為客戶機還是服務器而運行;一組編輯
框(Edit Box)用于輸入計算機服務器偵聽的端口號;為丁輸入字符串和顯示的字符串,
/06
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -