版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第14章 vc網(wǎng)絡(luò)編程 為了方便用戶進(jìn)行internet編程,vc中還提供了wininet,它提供了http、ftp、gopher等應(yīng)用層協(xié)議的客戶端接口,便于進(jìn)行簡(jiǎn)單的internet客戶端程序的開(kāi)發(fā)。 本章將主要介紹winsock接口、winsock mfc類的使用方法,簡(jiǎn)單的網(wǎng)絡(luò)通信程序開(kāi)發(fā)以及使用winine開(kāi)發(fā)internet客戶端程序的方法。14.1 網(wǎng)絡(luò)通信及開(kāi)發(fā)基礎(chǔ) 網(wǎng)絡(luò)通信是指應(yīng)用程序需要與網(wǎng)絡(luò)中其他系統(tǒng)上的應(yīng)用程序之間進(jìn)行通訊。進(jìn)行網(wǎng)絡(luò)編程的開(kāi)發(fā),必須要了解網(wǎng)絡(luò)通信的基本概念。14.1.1 tcp/ip協(xié)議 實(shí)現(xiàn)網(wǎng)上通信的應(yīng)用程序,無(wú)論是通過(guò)因特網(wǎng)還是小型的局域網(wǎng),一般都采
2、用同樣的原則、通過(guò)類似的功能實(shí)現(xiàn)網(wǎng)絡(luò)通信。(具體內(nèi)容請(qǐng)參照本書(shū))14.1.2 tcp/ip協(xié)議 tcp/ip協(xié)議的核心部分是傳輸層協(xié)議(tcp、udp),網(wǎng)絡(luò)層協(xié)議(ip)和物理接口層,這三層通常是在操作系統(tǒng)內(nèi)核中實(shí)現(xiàn),因此用戶編程一般不涉及這方面的內(nèi)容。 編程時(shí),編程界面有兩種形式:由內(nèi)核直接提供的系統(tǒng)調(diào)用;使用以庫(kù)函數(shù)方式提供的各種函數(shù)。前者為核內(nèi)實(shí)現(xiàn),后者為核外實(shí)現(xiàn)。用戶服務(wù)要通過(guò)核外的應(yīng)用程序才能實(shí)現(xiàn),具體來(lái)講就是使用套接字(socket)來(lái)實(shí)現(xiàn)。14.1.3 windows sockets基礎(chǔ) windows下網(wǎng)絡(luò)編程的規(guī)范windows sockets是windows下得到廣泛應(yīng)用
3、的、開(kāi)放的、支持多種協(xié)議的網(wǎng)絡(luò)編程接口。從1991年的1.0版到1995年的2.0.8版,經(jīng)過(guò)不斷完善并在intel、microsoft、sun、sgi、informix、novell等公司的全力支持下,已成為windows網(wǎng)絡(luò)編程的事實(shí)上的標(biāo)準(zhǔn)。 14.1.4 客戶機(jī)/服務(wù)器模式 在tcp/ip網(wǎng)絡(luò)中,兩個(gè)進(jìn)程間的相互作用的主機(jī)模式是客戶機(jī)/服務(wù)器(client/server)模式。該模式的建立基于以下兩點(diǎn):非對(duì)等作用和通信完全是異步的。客戶機(jī)/服務(wù)器模式在操作過(guò)程中采取的是主動(dòng)請(qǐng)示方式。(具體內(nèi)容請(qǐng)參照本書(shū))14.2 基本網(wǎng)絡(luò)通信開(kāi)發(fā) casyncsocket類封裝了異步、非阻塞socke
4、t的基本功能,用它做常用的網(wǎng)絡(luò)通信軟件很方便。對(duì)于異步、非阻塞的概念本節(jié)暫不討論,而是圍繞casyncsocket類,講解基本的面向連接的流套接字和非連接協(xié)議的數(shù)據(jù)報(bào)套接字的創(chuàng)建與使用。14.2.1 casyncsocket類及常用成員函數(shù)的使用 在mfc中,為套接口提供了相應(yīng)的類casyncsocket和csocket,casyncsocket提供基于異步通信的套接口封裝功能,csocket則是由casyncsocket派生,提供更加高層次的功能。本節(jié)將結(jié)合套接字的創(chuàng)建和使用過(guò)程,介紹casyncsocket類的主要成員函數(shù)。 (具體內(nèi)容請(qǐng)參照本書(shū))14.2.2 使用winsock進(jìn)行無(wú)連接
5、的通信 winsock提供了對(duì)udp(用戶數(shù)據(jù)報(bào)協(xié)議)的支持,通過(guò)udp協(xié)議可以向指定ip地址的主機(jī)發(fā)送數(shù)據(jù),同時(shí)也可以從指定ip地址的主機(jī)接收數(shù)據(jù),發(fā)送和接收方處于相同的地位沒(méi)有主次之分。14.2.3 無(wú)連接通信實(shí)例 本節(jié)給出一個(gè)使用casyncsocket類實(shí)現(xiàn)無(wú)連接的數(shù)據(jù)通信的簡(jiǎn)單實(shí)例。在服務(wù)器端,服務(wù)啟動(dòng)后,創(chuàng)建的socket向客戶端固定的端口定時(shí)(間隔2秒)發(fā)送一個(gè)計(jì)數(shù)值;在客戶端,創(chuàng)建的socket從服務(wù)器端固定的端口定時(shí)(間隔2秒)接收數(shù)據(jù),并顯示數(shù)據(jù)。(具體內(nèi)容請(qǐng)參照本書(shū))14.2.4 使用winsock進(jìn)行有連接的通信 winsock提供了對(duì)tcp(傳輸控制協(xié)議)的支持,通過(guò)
6、tcp協(xié)議可以與指定ip地址的主機(jī)建立,同時(shí)利用建立的連接可以雙向的交換數(shù)據(jù)。 使用casyncsocket類實(shí)現(xiàn)有連接數(shù)據(jù)交換也不復(fù)雜,與無(wú)連接通信不同,有連接的通信中必需有一方扮演服務(wù)器的角色等待另一方(客戶方)的連接請(qǐng)求,所以服務(wù)器方需要建立一個(gè)監(jiān)聽(tīng)套接字,然后在此套接字上等待連接。當(dāng)連接建立后會(huì)產(chǎn)生一個(gè)新的套接字用于通信。而客戶方在創(chuàng)建套接口后只需要簡(jiǎn)單的調(diào)用連接函數(shù)就可以創(chuàng)建連接。14.2.5 有連接通信實(shí)例 本節(jié)給出一個(gè)使用csocket類實(shí)現(xiàn)有連接的數(shù)據(jù)通信的簡(jiǎn)單實(shí)例。在服務(wù)器端,服務(wù)啟動(dòng)后,創(chuàng)建的socket開(kāi)始監(jiān)聽(tīng)客戶端的連接請(qǐng)求,并處于閉塞狀態(tài)(無(wú)法進(jìn)行其他操作),當(dāng)收到客
7、戶端的連接請(qǐng)求時(shí),創(chuàng)建一個(gè)通信套接字,定時(shí)(間隔2秒)向外發(fā)送一個(gè)計(jì)數(shù)值,同時(shí)關(guān)閉監(jiān)聽(tīng)套接字。14.3 網(wǎng)絡(luò)程序設(shè)計(jì)與開(kāi)發(fā) 對(duì)于許多初學(xué)者來(lái)說(shuō),網(wǎng)絡(luò)通信程序的開(kāi)發(fā),普遍的一個(gè)現(xiàn)象就是覺(jué)得難以入手。通過(guò)前面的介紹相信讀者對(duì)網(wǎng)絡(luò)程序的總體結(jié)構(gòu)有了直觀的認(rèn)識(shí)。在本節(jié),將重點(diǎn)介紹socket事件機(jī)制,通過(guò)它深入網(wǎng)絡(luò)程序開(kāi)發(fā)。14.3.1 網(wǎng)絡(luò)程序的一些概念 網(wǎng)絡(luò)程序往往涉及到很多概念,諸如同步/異步、阻塞/非阻塞等。初學(xué)者往往感到迷惑不清,下面對(duì)此作一下簡(jiǎn)單介紹。14.3.2 socket事件 在實(shí)際應(yīng)用中,程序員一般不直接使用casyncsocket類,而是自己定義他們的派生類,主要原因就是需要捕獲
8、socket激活的事件,如socket連接建立、數(shù)據(jù)接收完畢等。(具體內(nèi)容請(qǐng)參照本書(shū))14.3.3 socket事件的激發(fā)控制 默認(rèn)的情況下,casyncsocket類會(huì)調(diào)用所有的可重載函數(shù),而csocket類一個(gè)也不調(diào)用。在實(shí)際應(yīng)用中,往往需要控制socket對(duì)特定事件函數(shù)的調(diào)用,可采用如下兩種方式實(shí)現(xiàn)對(duì)這些事件函數(shù)激發(fā)的控制。(具體內(nèi)容請(qǐng)參照本書(shū))14.3.4 socket信息的獲取與處理 有時(shí),應(yīng)用程序需要知道socket的狀態(tài)信息,如對(duì)方程序的網(wǎng)絡(luò)地址和端口、socket是否處于阻塞狀態(tài)等。14.3.5 網(wǎng)絡(luò)程序開(kāi)發(fā)實(shí)例 本節(jié)將給出一個(gè)使用casyncsocket類的事件機(jī)制實(shí)現(xiàn)一個(gè)簡(jiǎn)
9、單的c/s結(jié)構(gòu)的網(wǎng)絡(luò)程序?qū)嵗?。客戶端與服務(wù)器建立連接后,可以向服務(wù)器端發(fā)送信息,而服務(wù)器收到消息后,將消息回發(fā)至客戶端,在客戶端的列表框中顯示。通過(guò)本實(shí)例,掌握casyncsocket類的事件的觸發(fā)與處理操作。14.4 wininet開(kāi)發(fā)internet客戶端程序 前面介紹了winsock網(wǎng)絡(luò)編程,winsock提供了windows應(yīng)用程序之間實(shí)現(xiàn)tcp/ip通信的標(biāo)準(zhǔn)。為了簡(jiǎn)化客戶/服務(wù)者(client/server)模式進(jìn)行internet編程,vc中還提供了wininet類,它提供了http、ftp、gopher等應(yīng)用層協(xié)議的客戶端接口。14.4.1 mfc wininet開(kāi)發(fā)包 mis
10、crosoft所提供的wininet開(kāi)發(fā)包是作為activex技術(shù)中的一部分,后來(lái)miscrosoft對(duì)wininet api進(jìn)行了包裝并提供了相應(yīng)的mfc類。 wininet開(kāi)發(fā)包的作用是提供了對(duì)http、ftp、gopher協(xié)議的支持,使開(kāi)發(fā)者在開(kāi)發(fā)internet程序時(shí)避免編寫(xiě)底層協(xié)議相關(guān)的代碼。此外wininet很多功能都是與ie有聯(lián)系的,比如說(shuō),可以使用ie中的設(shè)置和使用ie緩存中的數(shù)據(jù)。14.4.2 wininet開(kāi)發(fā)客戶端程序的流程 使用wininet進(jìn)行客戶端開(kāi)發(fā)的一般流程可分為建立連接、發(fā)送請(qǐng)求、關(guān)閉連接三個(gè)階段, 14.4.3 wininet開(kāi)發(fā)http客戶端程序?qū)嵗?本節(jié)
11、將給出一個(gè)使用wininet通過(guò)http協(xié)議讀取網(wǎng)上文件的實(shí)例,通過(guò)本實(shí)例,了解使用wininet開(kāi)發(fā)客戶端程序的基本過(guò)程。14.5 簡(jiǎn)單的web瀏覽器開(kāi)發(fā) 在miscrosoft操作系統(tǒng)中,用戶可以使用internet explorer或netscape navigator瀏覽html網(wǎng)頁(yè)。而在visual c+中,也提供了對(duì)html網(wǎng)頁(yè)編程的支持,可以通過(guò)vc編程,實(shí)現(xiàn)自己的瀏覽器。 在visual c+中,可以有兩種方法實(shí)現(xiàn)web瀏覽器:使用webbrowser控件和chtmlview視圖類。其中webbrowser控件為一個(gè)activex控件,其具體應(yīng)用本書(shū)不作討論。14.5.1 chtmlview視圖類簡(jiǎn)介 在visual c+6.0中,提供了chtmlview視類,它派生于cformview類,該類提供了常用的瀏
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東外語(yǔ)外貿(mào)大學(xué)《營(yíng)養(yǎng)生理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東司法警官職業(yè)學(xué)院《別墅建筑設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東生態(tài)工程職業(yè)學(xué)院《西方經(jīng)濟(jì)學(xué)(下)》2023-2024學(xué)年第一學(xué)期期末試卷
- 七年級(jí)上冊(cè)《6.2.1直線、射線、線段》課件與作業(yè)
- 廣東南華工商職業(yè)學(xué)院《色彩靜物及人物頭像》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東梅州職業(yè)技術(shù)學(xué)院《計(jì)算機(jī)創(chuàng)客訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣東茂名健康職業(yè)學(xué)院《半導(dǎo)體器件原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 一年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)1000題匯編
- 2024八年級(jí)地理上冊(cè)第三章自然資源-我們生存和發(fā)展的物質(zhì)基礎(chǔ)學(xué)情評(píng)估晉教版
- 【2021屆備考】2020全國(guó)名校物理試題分類解析匯編(11月第二期)A4-豎直上拋運(yùn)動(dòng)
- 電力建設(shè)安全工作規(guī)程解析(線路部分)課件
- 軟膠囊生產(chǎn)工藝流程
- 小學(xué)英語(yǔ)不規(guī)則動(dòng)詞表
- VIC模型PPT課件
- AQL2.5抽檢標(biāo)準(zhǔn)
- 宣傳廣告彩頁(yè)制作合同
- 【語(yǔ)法】小學(xué)英語(yǔ)語(yǔ)法大全
- 除濕機(jī)說(shuō)明書(shū)
- 征信知識(shí)測(cè)試題及答案
- 理想系列一體化速印機(jī)故障代碼
- 現(xiàn)代電路技術(shù)——故障檢測(cè)D算法
評(píng)論
0/150
提交評(píng)論