版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章VisualC++網(wǎng)絡(luò)編程概述VisualC++網(wǎng)絡(luò)編程是指用戶使用MFC類庫在VC編譯器中編寫程序,以實(shí)現(xiàn)網(wǎng)絡(luò)應(yīng)用。用戶通過VC編程實(shí)現(xiàn)的網(wǎng)絡(luò)軟件可以在網(wǎng)絡(luò)中不同的計(jì)算機(jī)之間互傳文件、圖像等信息。本章將向用戶介紹基于Windows操作系統(tǒng)的網(wǎng)絡(luò)編程根底知識,其開發(fā)環(huán)境是VC。在VC編譯器中,使用WindowsSocket進(jìn)行網(wǎng)絡(luò)程序開發(fā)是網(wǎng)絡(luò)編程中非常重要的一局部。1.1網(wǎng)絡(luò)根底知識如果用戶要進(jìn)行VC網(wǎng)絡(luò)編程,那么必須首先了解計(jì)算機(jī)網(wǎng)絡(luò)通信的根本框架和工作原理。在兩臺或多臺計(jì)算機(jī)之間進(jìn)行網(wǎng)絡(luò)通信時,其通信的雙方還必須遵循相同的通信原那么和數(shù)據(jù)格式。本節(jié)將向用戶介紹OSI七層網(wǎng)絡(luò)模型、TCP/IP協(xié)議以及C/S編程模型。1.1.1OSI七層網(wǎng)絡(luò)模型OSI網(wǎng)絡(luò)模型是一個開放式系統(tǒng)互聯(lián)的參考模型。通過這個參考模型,用戶可以非常直觀地了解網(wǎng)絡(luò)通信的根本過程和原理。OSI參考模型如圖1.1所示。圖1.1OSI七層網(wǎng)絡(luò)模型用戶從OSI網(wǎng)絡(luò)模型可以很直觀地看到,網(wǎng)絡(luò)數(shù)據(jù)從發(fā)送方到達(dá)接收方的過程中,數(shù)據(jù)的流向以及經(jīng)過的通信層和相應(yīng)的通信協(xié)議。事實(shí)上在網(wǎng)絡(luò)通信的發(fā)送端,其通信數(shù)據(jù)每到一個通信層,都會被該層協(xié)議在數(shù)據(jù)中添加一個包頭數(shù)據(jù)。而在接收方恰好相反,數(shù)據(jù)通過每一層時都會被該層協(xié)議剝?nèi)ハ鄳?yīng)的包頭數(shù)據(jù)。用戶也可以這樣理解,即網(wǎng)絡(luò)模型中的各層都是對等通信。在OSI七層網(wǎng)絡(luò)模型中,各個網(wǎng)絡(luò)層都具有各自的功能,如表1.1所示。表1.1各網(wǎng)絡(luò)層的功能注意:在表1.1中列出了OSI七層網(wǎng)絡(luò)模型中各層的根本功能概述。用戶根據(jù)這些根本的功能概述會對該網(wǎng)絡(luò)模型有一個比較全面的認(rèn)識。協(xié)議層名功能概述物理硬件層表示計(jì)算機(jī)網(wǎng)絡(luò)中的物理設(shè)備。常見的有計(jì)算機(jī)網(wǎng)卡等數(shù)據(jù)鏈路層將傳輸數(shù)據(jù)進(jìn)行壓縮與解壓縮網(wǎng)絡(luò)層將傳輸數(shù)據(jù)進(jìn)行網(wǎng)絡(luò)傳輸數(shù)據(jù)傳輸層進(jìn)行信息的網(wǎng)絡(luò)傳輸會話層建立物理網(wǎng)絡(luò)的連接表示層將傳輸數(shù)據(jù)以某種格式進(jìn)行表示應(yīng)用層應(yīng)用程序接口1.1.2TCP/IP協(xié)議TCP/IP協(xié)議實(shí)際上是一個協(xié)議簇,其包括了很多協(xié)議。例如,F(xiàn)TP〔文本傳輸協(xié)議〕、SMTP〔郵件傳輸協(xié)議〕等應(yīng)用層協(xié)議。TCP/IP協(xié)議的網(wǎng)絡(luò)模型只有4層,包括數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、數(shù)據(jù)傳輸層和應(yīng)用層,如圖1.2所示。圖1.2TCP/IP網(wǎng)絡(luò)協(xié)議模型在TCP/IP網(wǎng)絡(luò)編程模型中,各層的功能如表1.2所示。表1.2
TCP/IP網(wǎng)絡(luò)協(xié)議各層功能協(xié)議層名功能概述數(shù)據(jù)鏈路層網(wǎng)卡等網(wǎng)絡(luò)硬件設(shè)備以及驅(qū)動程序網(wǎng)絡(luò)層IP協(xié)議等互連協(xié)議數(shù)據(jù)傳輸層為應(yīng)用程序提供通信方法,通常為TCP、UDP協(xié)議應(yīng)用層負(fù)責(zé)處理應(yīng)用程序的實(shí)際應(yīng)用層協(xié)議在數(shù)據(jù)傳輸層中,包括了TCP和UDP協(xié)議。其中,TCP協(xié)議是基于面向連接的可靠的通信協(xié)議。其具有重發(fā)機(jī)制,即當(dāng)數(shù)據(jù)被破壞或者喪失時,發(fā)送方將重發(fā)該數(shù)據(jù)。而UDP協(xié)議是基于用戶數(shù)據(jù)報(bào)協(xié)議,屬于不可靠連接通信的協(xié)議。例如,當(dāng)用戶使用UDP協(xié)議發(fā)送一條消息時,并不知道該消息是否已經(jīng)到達(dá)接收方,或者在傳輸過程中數(shù)據(jù)已經(jīng)喪失。但是在即時通信中,UDP協(xié)議在對一些對時間要求較高的網(wǎng)絡(luò)數(shù)據(jù)傳輸方面有著重要的作用。1.1.3C/S編程模型C/S編程模型是基于可靠連接的通信模型。在通信的雙方必須使用各自的IP地址以及端口進(jìn)行通信。否那么,通信過程將無法實(shí)現(xiàn)。通常情況下,當(dāng)用戶使用C/S模型進(jìn)行通信時,其通信的任意一方稱為客戶端,那么另一方稱為效勞器端。效勞器端等待客戶端連接請求的到來,這個過程稱為監(jiān)聽過程。通常,效勞器監(jiān)聽功能是在特定的IP地址和端口上進(jìn)行。然后,客戶端向效勞器發(fā)出連接請求,效勞器響應(yīng)該請求那么連接成功。否那么,客戶端的連接請求失敗。C/S編程模型如圖1.3所示。圖1.3C/S編程模型由于客戶端連接效勞器時,需要使用效勞器的IP地址和監(jiān)聽端口號才能完成連接。所以,效勞器的IP地址和端口必須是固定的。在這里,向用戶介紹局部協(xié)議所使用的端口號碼。例如,HTTP協(xié)議〔網(wǎng)頁瀏覽效勞〕所使用的端口號為80,F(xiàn)TP協(xié)議〔文本傳輸〕所使用的端口號是21。注意:用戶在實(shí)際編程中,通信雙方的連接以及數(shù)據(jù)通信均是基于Socket〔套接字〕進(jìn)行的。1.2網(wǎng)絡(luò)編程根底網(wǎng)絡(luò)應(yīng)用程序可以使用MFC中封裝的套接字類進(jìn)行編程,也可以使用WindowsAPI函數(shù)進(jìn)行程序開發(fā)。相比較而言,MFC網(wǎng)絡(luò)編程較簡單一點(diǎn),用戶使用也非常方便。但是,使用MFC相關(guān)類編程會使用戶對網(wǎng)絡(luò)通信中的根本原理沒有清晰的認(rèn)識。而使用WindowsAPI函數(shù)那么恰好相反,可以使用戶熟悉網(wǎng)絡(luò)通信的根本原理。1.2.1Sockets套接字用戶在Windows中編寫網(wǎng)絡(luò)通信程序時,需要使用WindowsSockets〔Windows套接字〕。與Windows套接字相關(guān)的API函數(shù)稱為Winsock函數(shù)。在網(wǎng)絡(luò)通信的雙方,均有各自的套接字,并且該套接字與特定的IP地址和端口號相關(guān)聯(lián)。通常,套接字主要有兩種類型,分別是流式套接字〔SOCK_STREAM〕和數(shù)據(jù)報(bào)套接字〔SOCK_DGRAM〕。其中,流式套接字是專門用于使用TCP協(xié)議通信的應(yīng)用程序中,而數(shù)據(jù)報(bào)套接字那么是專門用于使用UDP協(xié)議進(jìn)行通信的應(yīng)用程序中。1.2.2網(wǎng)絡(luò)字節(jié)順序網(wǎng)絡(luò)字節(jié)順序是指TCP/IP協(xié)議中規(guī)定的數(shù)據(jù)傳輸使用格式,與之相對的字節(jié)順序是主機(jī)字節(jié)順序。網(wǎng)絡(luò)字節(jié)順序表示首先將數(shù)據(jù)中最重要的字節(jié)進(jìn)行存儲。例如,當(dāng)數(shù)據(jù)0x358457使用網(wǎng)絡(luò)字節(jié)順序進(jìn)行存儲時,該值在內(nèi)存中的存放順序?qū)⑹?x35、0x84、0x57。因?yàn)橥ㄐ艛?shù)據(jù)可能會在不同的機(jī)器之間進(jìn)行傳輸,所以通信數(shù)據(jù)必須以相同的格式進(jìn)行整理。只有經(jīng)過格式處理的通信數(shù)據(jù),才能在不同的機(jī)器之間進(jìn)行傳輸。在Winsock中,已經(jīng)提供了相關(guān)的函數(shù)處理網(wǎng)絡(luò)字節(jié)順序的相關(guān)問題,這些知識將在第2章中具體講解。1.3WindowsSockets介紹在MFC類庫中,幾乎封裝了WindowsSockets的全部功能。在本節(jié)中,將向用戶介紹兩個主要的套接字相關(guān)類,分別是CAsyncSocket類和CSocket類。1.3.1CAsyncSocket類在微軟根底類庫中,CAsyncSocket類封裝了異步套接字的根本功能。用戶使用該類進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)牟襟E如下:〔1〕調(diào)用構(gòu)造函數(shù)創(chuàng)立套接字對象。〔2〕如果創(chuàng)立效勞器端套接字,那么調(diào)用函數(shù)Bind()綁定本地IP和端口,然后調(diào)用函數(shù)Listen()監(jiān)聽客戶端的請求。如果請求到來,那么調(diào)用函數(shù)Accept()響應(yīng)該請求。如果創(chuàng)立客戶端套接字,那么直接調(diào)用函數(shù)Connect()連接效勞器即可?!?〕調(diào)用Send()等功能函數(shù)進(jìn)行數(shù)據(jù)傳輸與處理?!?〕關(guān)閉或銷毀套接字對象。注意:在MFC中,所有類中均有一個變量m_hWnd表示該類的實(shí)例句柄。1.3.2CSocket類CSocket類派生于CAsyncSocket類。該類不但具有CAsyncSocket類的根本功能,還具有串行化功能。用戶在實(shí)際編程中,通過將CSocket類與CSocketFile類和CArchive類一起使用,能夠很好的管理數(shù)據(jù)以及發(fā)送數(shù)據(jù)。用戶使用該類進(jìn)行網(wǎng)絡(luò)編程的步驟如下:〔1〕創(chuàng)立CSocket類對象?!?〕如果創(chuàng)立效勞器端套接字,那么調(diào)用函數(shù)Bind()綁定本地IP和端口,然后調(diào)用函數(shù)Listen()監(jiān)聽客戶端的請求。如果請求到來,那么調(diào)用函數(shù)Accept()響應(yīng)該請求。如果創(chuàng)立客戶端套接字,那么直接調(diào)用函數(shù)Connect()連接效勞器即可。〔3〕創(chuàng)立與CSocket類對象相關(guān)聯(lián)的CSocketFile類對象?!?〕創(chuàng)立與CSocketFile類相關(guān)聯(lián)的CArchive對象?!?〕使用CArchive類對象在客戶端和效勞器之間進(jìn)行數(shù)據(jù)傳輸?!?〕關(guān)閉或銷毀CSocket類、CSocketFile類和CArchive類的3
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度新能源項(xiàng)目投資合作擔(dān)保合同范本4篇
- 2025年度征收城市集體土地上房屋征收補(bǔ)償與回遷安置合同范本4篇
- 2025年度不動產(chǎn)登記測量合同范本(含電子數(shù)據(jù)交換)4篇
- 專業(yè)油漆工程包工包料合同書2024版版B版
- 2025年度貓咪寵物慈善救助與捐贈合同4篇
- 二零二五年度樓頂戶外休閑設(shè)施租賃合同范本4篇
- 2025年度荒山承包權(quán)買賣合同(生態(tài)農(nóng)業(yè)綜合體建設(shè))
- 二零二五年度茶葉產(chǎn)品售后服務(wù)與技術(shù)支持合同協(xié)議
- 2025年度競業(yè)禁止協(xié)議及產(chǎn)品研發(fā)保密合同
- 2025年度高端別墅裝修設(shè)計(jì)委托合同
- 孩子改名字父母一方委托書
- 2024-2025學(xué)年人教版初中物理九年級全一冊《電與磁》單元測試卷(原卷版)
- 江蘇單招英語考綱詞匯
- 礦山隱蔽致災(zāi)普查治理報(bào)告
- 2024年事業(yè)單位財(cái)務(wù)工作計(jì)劃例文(6篇)
- PDCA循環(huán)提高護(hù)士培訓(xùn)率
- 2024年工程咨詢服務(wù)承諾書
- 青桔單車保險(xiǎn)合同條例
- 車輛使用不過戶免責(zé)協(xié)議書范文范本
- 《獅子王》電影賞析
- 2023-2024學(xué)年天津市部分區(qū)九年級(上)期末物理試卷
評論
0/150
提交評論