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