




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第1章 網(wǎng)絡(luò)編程和開發(fā)環(huán)境1.1.1 11.1.2 2Visual C+ 2010Visual C+ 2010開發(fā)平臺開發(fā)平臺網(wǎng)絡(luò)編程的基本概念網(wǎng)絡(luò)編程的基本概念1 . 1 Visual C+ 2010開發(fā)平臺Visual Studio 2010Visual Studio 2010安裝安裝本書使用網(wǎng)上下載的Visual Studio 2010安裝包:cn_visual_studio_2010_ultimate_x86_dvd_532347.iso這是個鏡像(.iso)文件,需要虛擬光驅(qū)才能運(yùn)行。用虛擬光驅(qū)軟件DAEMON Tools Lite載入鏡像,如圖1.1所示。1.1.1 Visual
2、Studio 2010安裝載入后彈出如圖1.2所示的啟動窗口。1.1.1 Visual Studio 2010安裝單擊“安裝Microsoft Visual Studio 2010”,進(jìn)入如圖1.3所示的安裝向?qū)Ы缑?,單擊“下一步”按鈕繼續(xù)。1.1.1 Visual Studio 2010安裝在圖1.4所示窗口中選擇“我已閱讀并接受許可條款”,在圖1.5所示窗口中選擇“完全”,產(chǎn)品安裝路徑為默認(rèn)的“C:Program FilesMicrosoft Visual Studio 10.0”,單擊“安裝”按鈕開始安裝進(jìn)程。 1.1.1 Visual Studio 2010安裝Visual Studi
3、o 2010包含Microsoft .NET平臺的許多組件,如圖1.6所示。1.1.1 Visual Studio 2010安裝初次啟動會彈出如圖1.7所示的“選擇默認(rèn)環(huán)境設(shè)置”對話框,本書是Visual C+ 編程,故選擇“Visual C+開發(fā)設(shè)置”,單擊“啟動Visual Studio”按鈕進(jìn)入開發(fā)環(huán)境。1.1.1 Visual Studio 2010安裝Visual Studio 2010的Visual C+集成開發(fā)環(huán)境的起始界面如圖1.8所示。1.1.2 創(chuàng)建Visual C+項目工程選擇菜單命令“文件”“新建”“項目”,如圖1.9所示。 1.1.2 創(chuàng)建Visual C+項目工程系
4、統(tǒng)彈出“新建項目”對話框(如圖1.10所示),左邊“項目類型”樹中默認(rèn)選項為“Visual C+”“MFC”,對應(yīng)右邊“模板”選擇“MFC應(yīng)用程序”。1.1.2 創(chuàng)建Visual C+項目工程單擊“確定”按鈕,彈出“MFC應(yīng)用程序向?qū)А睂υ捒颍ㄈ鐖D1.11所示),接下來我們將在這個對話框的指引下輕松完成創(chuàng)建VC工程的工作,單擊“下一步”按鈕繼續(xù)。1.1.2 創(chuàng)建Visual C+項目工程在“應(yīng)用程序類型”界面(如圖1.12所示)選中“基于對話框”單選按鈕。1.1.2 創(chuàng)建Visual C+項目工程接下來的“用戶界面功能”和“高級功能”界面(如圖1.13所示)都采用系統(tǒng)默認(rèn)設(shè)置,連續(xù)單擊“下一步
5、”按鈕跳過。1.1.2 創(chuàng)建Visual C+項目工程最后一步出現(xiàn)的是“生成的類”,稍留意下可以看到,系統(tǒng)已經(jīng)自動為程序建立了兩個類CGetIPAndPortApp和CGetIPAndPortDlg(如圖1.14所示)。1.1.3 Visual C+可視化設(shè)計開發(fā)環(huán)境工作區(qū)主界面將呈現(xiàn)的樣子如圖1.15所示。1.1.3 Visual C+可視化設(shè)計主工作區(qū)大致分為三部分,最左邊是供用戶瀏覽程序結(jié)構(gòu)的,包括好幾個選項卡界面,常用的是解決方案資源管理器、類視圖和資源視圖,如圖1.16所示。1.1.3 Visual C+可視化設(shè)計在本例的三個類中,CAboutDlg類和CGetIPAndPortDl
6、g類都有各自的對話框界面資源。資源視圖中Dialog目錄下有它們的ID號(對應(yīng)的分別是IDD_ABOUTBOX和IDD_GETIPANDPORT_ DIALOG),雙擊ID號可以打開其對話框的界面設(shè)計工作區(qū),如圖1.17所示。1.1.3 Visual C+可視化設(shè)計只是針對本書所介紹的網(wǎng)絡(luò)編程,有一個控件需要特別提一下,那就是IP地址控件(如圖1.18所示)。它在界面上的顯示效果如圖1.19所示。 1.1.3 Visual C+可視化設(shè)計選擇工具箱中的控件設(shè)計程序界面,可以看到VC界面設(shè)計環(huán)境的使用極其方便,絲毫不比VB遜色。在布局界面時可以使用工具欄中提供的功能調(diào)整各個控件的大小、對齊方式。
7、如圖1.20所示,1.1.3 Visual C+可視化設(shè)計最終設(shè)計出的程序界面效果如圖1.21所示。1.1.4 一個簡單的Visual C+小程序例如,為了在程序代碼中獲得用戶輸入的IP,需要給IP地址控件關(guān)聯(lián)一個變量。如圖1.22所示,右擊該控件,在彈出的菜單中選擇“添加變量”命令。 1.1.4 一個簡單的Visual C+小程序出現(xiàn)“添加成員變量向?qū)А睂υ捒颍ㄈ鐖D1.23所示),將變量命名為“m_ip”,變量類別為“Control”。1.1.4 一個簡單的Visual C+小程序下面接著添加變量,給用于接收端口號的文本框關(guān)聯(lián)Value變量strport(如圖1.24所示)。1.1.4 一個
8、簡單的Visual C+小程序再設(shè)置該文本框的Number屬性為True(如圖1.25所示),之所以這樣設(shè)置,是為了限定用戶只能在這個文本框中輸入數(shù)字形式的端口號。1.1.4 一個簡單的Visual C+小程序本程序還有一個文本框是用于顯示程序獲取的IP和端口的,給它關(guān)聯(lián)Control型變量m_showIpAndPort,并且設(shè)置Read Only屬性為True(作為顯示信息窗口的文本框一般都設(shè)為只讀模式),如圖1.26所示。 1.1.4 一個簡單的Visual C+小程序程序界面上的“獲取”按鈕是實現(xiàn)本程序功能的關(guān)鍵,編程工作主要就是給這個按鈕添加事件處理程序。右擊“獲取”按鈕,在彈出的功能
9、菜單中選擇“添加事件處理程序”命令,如圖1.27所示。1.1.4 一個簡單的Visual C+小程序在“事件處理程序向?qū)А睂υ捒蛑袑⑦@個處理程序命名為“OnShowIpAndPort”,如圖1.28所示。1.1.4 一個簡單的Visual C+小程序單擊“添加編輯”按鈕,進(jìn)入代碼編輯窗口(如圖1.29所示),VC自動打開需要編輯的程序代碼文件GetIPAndPortDlg.cpp并定位到源文件中相應(yīng)的位置,供用戶添加自己的代碼。1.1.4 一個簡單的Visual C+小程序為“獲取”按鈕編寫的事件過程代碼如下:BYTE nFild4;/分別存放IP地址的四個字段CString sip; /IP
10、地址的字符串形式(可以直接顯示在界面上的)UpdateData(); /刷新對話框界面,獲取用戶輸入/驗證輸入是否合法if(m_ip.IsBlank()/若用戶沒有填寫IP地址,則提示填寫AfxMessageBox(請?zhí)顚慖P地址!);return;if(strport.IsEmpty()/若用戶忘了指定端口號,則提醒其指定AfxMessageBox(請指定進(jìn)程端口!);return;/獲取用戶輸入的IP地址值m_ip.GetAddress(nFild0,nFild1,nFild2,nFild3);/將IP地址格式化為可以在計算機(jī)屏幕上顯示的字符串sip.Format(%d.%d.%d.%d,
11、nFild0,nFild1,nFild2,nFild3);/在界面上顯示用戶輸入的網(wǎng)絡(luò)進(jìn)程地址(包括所在主機(jī)的IP和端口)m_showIpAndPort.SetWindowTextA(sip + : + strport);m_ip.SetFocus();/焦點(diǎn)回到IP地址欄1.1.4 一個簡單的Visual C+小程序雙擊“關(guān)于”按鈕,為其添加事件過程(如圖1.30所示)?!瓣P(guān)于”按鈕的Click事件代碼如下:CAboutDlg dlg;dlg.DoModal();/顯示“關(guān)于”對話框1.1.4 一個簡單的Visual C+小程序單擊工具欄上的“啟動調(diào)試”( )按鈕,程序界面如圖1.31所示。
12、我們先不填寫IP地址而直接單擊“獲取”按鈕,看看會發(fā)生什么。程序彈出了消息框,提醒填寫IP地址(如圖1.32所示)。 1.1.4 一個簡單的Visual C+小程序填寫完合法IP,再故意不填端口號,單擊“獲取”按鈕后,程序同樣也會彈出消息框,提醒輸入端口號(如圖1.33所示)。1.1.4 一個簡單的Visual C+小程序在IP和端口都合法填寫的情況下,單擊“獲取”按鈕,程序就會將用戶輸入的網(wǎng)絡(luò)進(jìn)程地址(IP+端口)顯示在下方的輸出文本框中,如圖1.34所示。1.1.4 一個簡單的Visual C+小程序單擊“關(guān)于”按鈕,程序彈出“關(guān)于GetIPAndPort”對話框(如圖1.35所示),這是
13、一個版本聲明對話框,每一個Windows程序幾乎都有這樣一個對話框,用于聲明版本號和版權(quán)信息。1 . 2 網(wǎng)絡(luò)編程基礎(chǔ)知識1.2.1 1.2.1 計算機(jī)網(wǎng)絡(luò)協(xié)議計算機(jī)網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)中的計算機(jī)要做到有條不紊地交換數(shù)據(jù),就必須遵守一些事先約定好的規(guī)則,這些規(guī)則、標(biāo)準(zhǔn)或約定就稱為網(wǎng)絡(luò)協(xié)議(Network Protocol),它主要由以下三個要素組成:(1)語法語法,即數(shù)據(jù)與控制信息的結(jié)構(gòu)或格式;(2)語義語義,即需要發(fā)出何種控制信息,完成何種動作,以及做出何種響應(yīng);(3)同步同步,即事件實現(xiàn)順序的詳細(xì)說明。1.2.1 網(wǎng)絡(luò)協(xié)議該協(xié)議將網(wǎng)絡(luò)功能劃分成獨(dú)立的四層結(jié)構(gòu),自上而下分別是應(yīng)用層、傳輸層、網(wǎng)際層和
14、網(wǎng)絡(luò)接口層,如圖1.36所示。1.2.1 網(wǎng)絡(luò)協(xié)議其實TCP/IP并不是一個單獨(dú)的協(xié)議,而是由一系列網(wǎng)絡(luò)協(xié)議所組成的協(xié)議集合(協(xié)議族),這個龐大的協(xié)議家族按照如圖1.37所示的分層結(jié)構(gòu)組織起來構(gòu)成的有機(jī)整體稱為網(wǎng)絡(luò)協(xié)議棧。1.2.1 網(wǎng)絡(luò)協(xié)議1. 1. 應(yīng)用層(應(yīng)用層(Application LayerApplication Layer)。)。應(yīng)用層在TCP/IP協(xié)議棧的第4層,即最高層,它提供面向用戶的網(wǎng)絡(luò)服務(wù),如進(jìn)行文件的傳輸服務(wù)和遠(yuǎn)程登錄服務(wù)等。不同的用戶對應(yīng)用層服務(wù)的需求不同。因此,應(yīng)用層定義了許多面向用戶的,提供特定服務(wù)的協(xié)議。比較常用的有遠(yuǎn)程登錄協(xié)議(Telnet)、文件傳輸協(xié)議(
15、FTP)、超文本傳輸協(xié)議(HTTP)、域名系統(tǒng)(DNS)、簡單網(wǎng)絡(luò)管理協(xié)議(SNMP)、簡單郵件傳輸協(xié)議(SMTP)、郵局協(xié)議(POP3)和即時通信協(xié)議(OICQ)等。2. 2. 傳輸層(傳輸層(Transport LayerTransport Layer)。)。在應(yīng)用層之下的是傳輸層,有的書中也稱為“運(yùn)輸層”。在TCP/IP協(xié)議棧中,傳輸層處于第3層。傳輸層完成通常所說的兩臺主機(jī)之間的通信,其實質(zhì)是兩臺主機(jī)上對應(yīng)的應(yīng)用進(jìn)程之間應(yīng)用進(jìn)程之間的通信,也稱為端到端(End to End)通信。1.2.1 網(wǎng)絡(luò)協(xié)議3. 3. 網(wǎng)際層(網(wǎng)際層(Internet LayerInternet Layer)
16、。)。網(wǎng)際層在TCP/IP協(xié)議棧的第2層,也稱為互聯(lián)網(wǎng)絡(luò)層(互聯(lián)層)或Internet層,因該層的主要協(xié)議是IP,所以也可簡稱為IP層。它是TCP/IP協(xié)議棧中最重要的一層,主要功能是將源主機(jī)上的分組根據(jù)需要發(fā)送到Internet中的任何一臺目標(biāo)主機(jī)上。4. 4. 網(wǎng)絡(luò)接口層(網(wǎng)絡(luò)接口層(Host-to-network LayerHost-to-network Layer)。)。網(wǎng)絡(luò)接口層處于TCP/IP協(xié)議棧的最低層,它負(fù)責(zé)將其之上的網(wǎng)絡(luò)層所要發(fā)送出去的數(shù)據(jù)(即IP數(shù)據(jù)報)發(fā)送到其下面的物理網(wǎng)絡(luò),或接收由物理網(wǎng)絡(luò)發(fā)送到該目標(biāo)機(jī)的數(shù)據(jù)幀,并抽出IP數(shù)據(jù)報交給網(wǎng)際層。1.2.2 網(wǎng)絡(luò)應(yīng)用編程界面
17、平時上網(wǎng)的時候如果單擊桌面右下角任務(wù)欄上表示網(wǎng)絡(luò)連接的圖標(biāo),在彈出的網(wǎng)絡(luò)連接狀態(tài)對話框中單擊“屬性”按鈕,就可以在連接使用的項目列表中看到已經(jīng)內(nèi)置于操作系統(tǒng)之中的TCP/IP了,如圖1.38所示。1.2.2 網(wǎng)絡(luò)應(yīng)用編程界面學(xué)習(xí)網(wǎng)絡(luò)編程首先要清楚所做的是哪一個層次上的編程工作。目前,網(wǎng)絡(luò)的四層體系結(jié)構(gòu)中的三層已經(jīng)有了成熟可靠的實現(xiàn)實體,如圖1.39所示。編程界面有兩種形式,一種是由內(nèi)核直接提供的系統(tǒng)調(diào)用,在Windows下表現(xiàn)為Windows API函數(shù);另一種是以程序庫方式提供的各種函數(shù)和類。1.2.2 網(wǎng)絡(luò)應(yīng)用編程界面TCP/IP網(wǎng)絡(luò)環(huán)境下的應(yīng)用程序是通過網(wǎng)絡(luò)應(yīng)用編程界面(Socket,即
18、套接字)實現(xiàn)的。(1)Windows Socket的概念。Windows Socket顧名思義,就是在Windows環(huán)境下使用的Socket,那么Socket又是什么呢?它是一套網(wǎng)絡(luò)編程機(jī)制(或規(guī)范),簡稱為Winsock。(2)Windows Socket的來源。Socket最早是UNIX操作系統(tǒng)下流行的一種網(wǎng)絡(luò)編程接口,于1983年在Berkeley(加州大學(xué)伯克利分校)4.2 BSD操作系統(tǒng)中被首先引入,因此被稱為Berkeley Socket API。1.2.3 網(wǎng)絡(luò)程序工作機(jī)理通信時,其中的一個網(wǎng)絡(luò)程序?qū)⒁獋鬏數(shù)囊欢涡畔懭胨谥鳈C(jī)的Socket中,該Socket通過與網(wǎng)絡(luò)接口卡相連的傳輸介質(zhì)將這段信息發(fā)送到另外一臺主機(jī)的Socket中,使這段信息能夠傳送到其他程序中,如圖1.40所示。1.2.3 網(wǎng)絡(luò)程序工作機(jī)理為了滿足不同的通信程序?qū)νㄐ刨|(zhì)量和性能的要求,一般的網(wǎng)絡(luò)系統(tǒng)都提供了以下三種不同類型的套接字,以供用戶在設(shè)計網(wǎng)絡(luò)程序時根據(jù)需要進(jìn)行選擇。 流式套接字(SOCK_STREAM)。它提供了一種可靠的、面向連接的雙向數(shù)據(jù)傳輸服務(wù)。實現(xiàn)了數(shù)據(jù)的無差錯、無重復(fù)地發(fā)送,內(nèi)設(shè)流量控制,被傳輸?shù)臄?shù)據(jù)看作是無記錄邊界的字節(jié)流。 數(shù)據(jù)報套接字(SOCK_DGRAM)。它提供了一種無連接、不可靠的雙向數(shù)據(jù)傳輸服務(wù)。數(shù)據(jù)以獨(dú)立的包形式被發(fā)送,并且保留了記錄邊界,不提供可靠性保
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微軟程序員考試題及答案
- 聲帶息肉護(hù)理查房
- 汽車美容與裝飾實訓(xùn)課件 8-0項目二汽車外部的清潔護(hù)理 任務(wù)五汽車外飾的清潔護(hù)理實訓(xùn)
- 橋梁油漆施工方案
- 采購項目保障措施方案
- 溫度變送器考試題及答案
- 幕墻質(zhì)量自評方案
- 如何設(shè)計電子賀卡
- 思想引領(lǐng)面試題及答案
- 幼兒園健康領(lǐng)域障礙跑教案設(shè)計
- 內(nèi)蒙古交通集團(tuán)有限公司社會化招聘考試試卷及答案2022
- 國家開放大學(xué)《當(dāng)代中國政治制度》期末考試題庫
- 智能智能服務(wù)系統(tǒng)開發(fā)合同
- 2025屆新高考語文古詩文默寫100題匯編(含答案解析)
- 征信異議申訴合同(2篇)
- 中醫(yī)小兒貼敷培訓(xùn)課件
- 自殺患者應(yīng)急預(yù)案
- 路由路徑靠算法(課件)-七年級信息科技全一冊同步教學(xué)(人教版2024)
- 中建雙優(yōu)化案例指引
- 《幕墻維護(hù)維修技術(shù)規(guī)程》
- 康復(fù)設(shè)備及器材供貨安裝及售后服務(wù)方案
評論
0/150
提交評論