版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 / 23 文檔可自由編輯打印山山 東東 英英 才才 學(xué)學(xué) 院院畢畢 業(yè)業(yè) 論論 文(設(shè)文(設(shè) 計(jì))計(jì))論文(設(shè)計(jì))題目: 網(wǎng)絡(luò)聊天系統(tǒng)的 設(shè)計(jì)與實(shí)現(xiàn) 二級(jí)學(xué)院: 計(jì)算機(jī)學(xué)院 學(xué)科專業(yè): 計(jì)算機(jī)應(yīng)用技術(shù) 學(xué) 號(hào): 2 姓 名: 趙廣智 班 級(jí): 計(jì)算機(jī)應(yīng)用一班 指導(dǎo)教師: 趙陳粟 論文提交時(shí)間: 2009.3.18 山山東東英才學(xué)院教英才學(xué)院教務(wù)處務(wù)處制制2009 年年 3 月月 18 日日2 / 23 文檔可自由編輯打印畢業(yè)論文(設(shè)計(jì))內(nèi)容介紹論文(設(shè)計(jì))題 目網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)選題時(shí)間2008.12.20完成時(shí)間2009.3.15論文(設(shè)計(jì))字?jǐn)?shù)6400關(guān) 鍵 詞Winsock 即
2、時(shí)通訊 點(diǎn)對(duì)點(diǎn)數(shù)據(jù)流圖數(shù)據(jù)字典結(jié)構(gòu)圖層次輸入輸出處理圖 偽碼論文(設(shè)計(jì))題目的來(lái)源、理論和實(shí)踐意義:隨著計(jì)算機(jī)網(wǎng)絡(luò)日新月異的發(fā)展,人們的交流方式越來(lái)越多,傳統(tǒng)的交流方式,如:信件、電報(bào)、電話等已經(jīng)難以滿足人們的交流要求,在互聯(lián)網(wǎng)上即時(shí)的和好友取得聯(lián)系,已經(jīng)成為當(dāng)今社會(huì)人們主流的聯(lián)系方式。因此,兩臺(tái)計(jì)算機(jī)之間進(jìn)行即時(shí)通訊、發(fā)送文件等交流方式已經(jīng)成為必然潮流。目前,用于實(shí)現(xiàn)單一的即時(shí)通訊、文件共享的軟件實(shí)在太少,而且,它們中大部分都是絕對(duì)的模式,對(duì)遠(yuǎn)程服務(wù)器有非常大的依賴性,沒(méi)有徹底實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的交流。為此,我們決定開發(fā)一個(gè)專用于實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)之間即時(shí)通訊、文件共享的軟件,以方便兩臺(tái)計(jì)算機(jī)之間信息的
3、交流。論文(設(shè)計(jì))的主要內(nèi)容及創(chuàng)新點(diǎn):本文主要描述了如何利用匯編語(yǔ)言編寫一個(gè)能夠?qū)崿F(xiàn)網(wǎng)絡(luò)之間信息傳遞的聊天程序系統(tǒng),并介紹了無(wú)連接協(xié)議的 SOCKET 編程模型,以及闡述了聊天程序的設(shè)計(jì)目的前景和具體規(guī)劃,還有聊天程序的商業(yè)運(yùn)作。本軟件屬于點(diǎn)對(duì)點(diǎn)連接的,在連接并通信時(shí),尤其是近程的即時(shí)通訊,徹底的脫離了遠(yuǎn)程的服務(wù)器,避免了和遠(yuǎn)程服務(wù)器連接時(shí)過(guò)多的浪費(fèi)網(wǎng)絡(luò)資源。并且避免了服務(wù)器忙或與服務(wù)器無(wú)法連接時(shí),浪費(fèi)過(guò)多時(shí)間用于和服務(wù)器建立連接!因此,這個(gè)軟件是極具適應(yīng)性和實(shí)用性的即時(shí)通訊軟件。附:論文(設(shè)計(jì))本人簽名: 趙廣智 2009 年 3 月 15 日3 / 23 文檔可自由編輯打印網(wǎng)絡(luò)聊天系統(tǒng)的設(shè)
4、計(jì)與實(shí)現(xiàn)目 錄摘 要.4ABSTRACT.5前 言.6一、聊天系統(tǒng)的運(yùn)行開發(fā)環(huán)境.71.1 硬件環(huán)境 .71.2 軟件環(huán)境 .9二、走進(jìn) UDP 協(xié)議.102.1UDP 的定義 .102.2UDP 的組成 .10三、利用 VB 語(yǔ)言設(shè)計(jì)網(wǎng)絡(luò)聊天系統(tǒng).133.1 創(chuàng)建服務(wù)器 .133.2 創(chuàng)建客戶 .143.3 進(jìn)行通信 .15四、網(wǎng)絡(luò)聊天軟件的驗(yàn)證.16總結(jié).18謝 辭.19參考文獻(xiàn).20附錄.214 / 23 文檔可自由編輯打印摘 要本文主要描述了如何利用匯編語(yǔ)言編寫一個(gè)能夠?qū)崿F(xiàn)網(wǎng)絡(luò)之間信息傳遞的聊天程序系統(tǒng).并介紹了無(wú)連接協(xié)議的 SOCKET 編程模型,以及闡述了聊天程序的設(shè)計(jì)目的前景和具
5、體規(guī)劃,還有聊天程序的商業(yè)運(yùn)作.本論文共分為五部分.第一部分簡(jiǎn)單的分析了即時(shí)聊天系統(tǒng)開發(fā)的可行性,并重點(diǎn)對(duì)技術(shù)可行性(選擇 VB)做了詳細(xì)分析;第二部分借助數(shù)據(jù)流圖和數(shù)據(jù)字典對(duì)系統(tǒng)的功能和性能進(jìn)行了詳細(xì)的需求分析,建立了系統(tǒng)的邏輯結(jié)構(gòu);第三部分利用 VB 程序設(shè)計(jì)了 UDP 聊天程序;第四部分驗(yàn)證了設(shè)計(jì)的程序;第五部分是此次設(shè)計(jì)的結(jié)論總結(jié)及部分參考文獻(xiàn)和附錄。關(guān)鍵字:Winsock 即時(shí)通訊 點(diǎn)對(duì)點(diǎn)數(shù)據(jù)流圖數(shù)據(jù)字典結(jié)構(gòu)圖層次輸入輸出處理圖 偽碼 5 / 23 文檔可自由編輯打印AbstractThis paper describes how to use assembly language t
6、o achieve the preparation of a network of transmitting information between the chat program system. also is now the network rapid development result.The present paper altogether divides into five parts.The first part of simple analysis this immediate communication system development feasibility, and
7、 key (chose VB) to the technical feasibility to make the multianalysis; The second part has carried on the detailed demand analysis with the aid of the data flow graph and the data dictionary to the system function and the performance, has established the system logical organization; The third part
8、chatted the procedure using VB programming UDP; The fourth part has confirmed the design procedure; Finally is this design conclusion summary and the part reference and the appendix.Key Word: Winsock immediate communication point-to-point, data flow graph data dictionary structure drawing level inpu
9、t output processing chart pseudo-code VB前 言隨著計(jì)算機(jī)網(wǎng)絡(luò)日新月異的發(fā)展,人們的交流方式越來(lái)越多,傳統(tǒng)的交流方式,如:信件、電報(bào)、電話等已經(jīng)難以滿足人們的交流要求,在互聯(lián)網(wǎng)上即時(shí)的和好友取得聯(lián)系,已經(jīng)成為當(dāng)今6 / 23 文檔可自由編輯打印社會(huì)人們主流的聯(lián)系方式。因此,兩臺(tái)計(jì)算機(jī)之間進(jìn)行即時(shí)通訊、發(fā)送文件等交流方式已經(jīng)成為必然潮流。因此出現(xiàn)了、等聊天工具,然而、等聊天工具雖然方便、實(shí)用,但是,娛樂(lè)功能太多,有很多吸引人的娛樂(lè)功能,從一定程度上來(lái)說(shuō),是一種娛樂(lè)工具,不能作為用于即時(shí)通訊、文件共享的專用工具。目前,用于實(shí)現(xiàn)單一的即時(shí)通訊、文件共享的軟件實(shí)在
10、太少,而且,它們中大部分都是絕對(duì)的模式,對(duì)遠(yuǎn)程服務(wù)器有非常大的依賴性,沒(méi)有徹底實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的交流。為此,我們決定開發(fā)一個(gè)專用于實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)之間即時(shí)通訊、文件共享的軟件,以方便兩臺(tái)計(jì)算機(jī)之間信息的交流。本軟件屬于點(diǎn)對(duì)點(diǎn)連接的,在連接并通信時(shí),尤其是近程的即時(shí)通訊,徹底的脫離了遠(yuǎn)程的服務(wù)器,避免了和遠(yuǎn)程服務(wù)器連接時(shí)過(guò)多的浪費(fèi)網(wǎng)絡(luò)資源。并且避免了服務(wù)器忙或與服務(wù)器無(wú)法連接時(shí),浪費(fèi)過(guò)多時(shí)間用于和服務(wù)器建立連接!因此,這個(gè)軟件是極具適應(yīng)性和實(shí)用性的即時(shí)通訊軟件!一、聊天系統(tǒng)的運(yùn)行開發(fā)環(huán)境1.1UDP 協(xié)議 硬件環(huán)境 1) UDP 協(xié)議是英文 UserDatagramProtocol 的縮寫,即用戶數(shù)據(jù)報(bào)
11、協(xié)議,主要用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶/服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用 UDP 協(xié)議。UDP 協(xié)議從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類似協(xié)議所掩蓋,但是即使是在今天,UDP 仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。 7 / 23 文檔可自由編輯打印(2) 與我們所熟知的 TCP(傳輸控制協(xié)議)協(xié)議一樣,UDP 協(xié)議直接位于 IP(網(wǎng)際協(xié)議)協(xié)議的頂層。根據(jù) OSI(開放系統(tǒng)互連)參考模型,UDP 和 TCP 都屬于傳輸層協(xié)議。(3) UDP 協(xié)議的主要作用是將網(wǎng)絡(luò)數(shù)據(jù)流量壓縮成數(shù)據(jù)報(bào)的形式。一個(gè)典型的數(shù)據(jù)報(bào)就是
12、一個(gè)二進(jìn)制數(shù)據(jù)的傳輸單位。每一個(gè)數(shù)據(jù)報(bào)的前 8 個(gè)字節(jié)用來(lái)包含報(bào)頭信息,剩余字節(jié)則用來(lái)包含具體的傳輸數(shù)據(jù)。(4) 吞吐量不受擁擠控制算法的調(diào)節(jié),只受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶寬、源端和終端主機(jī)性能的限制。雖然 UDP 是一個(gè)不可靠的協(xié)議,但它是分發(fā)信息的一個(gè)理想?yún)f(xié)議。例如,在屏幕上報(bào)告股票市場(chǎng)、在屏幕上顯示航空信息等等。UDP 也用在路由信息協(xié)議 RIP(Routing Information Protocol)中修改路由表。在這些應(yīng)用場(chǎng)合下,如果有一個(gè)消息丟失,在幾秒之后另一個(gè)新的消息就會(huì)替換它。UDP 廣泛用在多媒體應(yīng)用中,例如,Progressive Networks 公司開發(fā)的 R
13、ealAudio 軟件,它是在因特網(wǎng)上把預(yù)先錄制的或者現(xiàn)場(chǎng)音樂(lè)實(shí)時(shí)傳送給客戶機(jī)的一種軟件,該軟件使用的 RealAudio audio-on-demand protocol 協(xié)議就是運(yùn)行在 UDP 之上的協(xié)議,大多數(shù)因特網(wǎng)電話軟件產(chǎn)品也都運(yùn)行在UDP 之上。用戶數(shù)據(jù)報(bào)協(xié)議是定義用來(lái)在互連網(wǎng)絡(luò)環(huán)境中提供包交換的計(jì)算機(jī)通信的協(xié)議。此協(xié)議默認(rèn)認(rèn)為網(wǎng)路協(xié)議(IP)是其下層協(xié)議。此協(xié)議提供了向另一用戶程序發(fā)送信息的最簡(jiǎn)便的協(xié)議機(jī)制。此協(xié)議是面向操作的,未提供提交和復(fù)制保護(hù)。如果應(yīng)用程序要求可靠的數(shù)據(jù)傳送應(yīng)該使用傳輸控制協(xié)議(TCP) 。數(shù)據(jù)報(bào)格式如下: 圖 1 用戶數(shù)據(jù)報(bào)頭格式源端口是可選域,當(dāng)其有意義
14、時(shí),它指的是發(fā)送進(jìn)程的端口,這也就假定了在沒(méi)有其它信息的情況下,返回信息應(yīng)該向什么地方發(fā)送。如果不使用它,則在此域中填 0。目的端口在有特定的目的網(wǎng)絡(luò)地址時(shí)有意義。長(zhǎng)度指的是此用戶數(shù)據(jù)報(bào)長(zhǎng)度的八進(jìn)制表示。 (這表明最小的數(shù)據(jù)報(bào)長(zhǎng)度是 8。 )校驗(yàn)碼有 16 位,是對(duì) IP 頭,UDP 頭和數(shù)據(jù)中信息包頭的數(shù)位取反之和再取反得到的。包頭從概念上說(shuō)是在 UDP 頭信息之前的,它包括有源地址,目的地地址,所使用的協(xié)議和UDP 長(zhǎng)度。這些信息使信息不能被錯(cuò)誤地接收。這個(gè)校驗(yàn)過(guò)程與 TCP 中使用的過(guò)程一致。8 / 23 文檔可自由編輯打印圖 2 用戶數(shù)據(jù)報(bào)頭格式如果計(jì)算出的校驗(yàn)碼為零,它將被全零發(fā)送。
15、全零的校驗(yàn)值意味著發(fā)送者未產(chǎn)生校驗(yàn)碼。用戶接口用戶接口應(yīng)該允許創(chuàng)建新的接收端口,在接收端口的接收操作有:應(yīng)該返回一個(gè)八進(jìn)制數(shù)說(shuō)明源端口和源地址,允許數(shù)據(jù)報(bào)傳送,指定數(shù)據(jù),源和目標(biāo)端口和目的地地址。IP 層接口UDP 模塊必須能夠決定源和目標(biāo)的網(wǎng)絡(luò)地址,而且必須能夠從包頭中得知所使用的協(xié)議。一個(gè)可能的接口方式是返回整個(gè)數(shù)據(jù)報(bào),包括接收操作返回的包頭。這樣的接口還應(yīng)該允許 UDP 向IP 傳送完整的帶包頭的數(shù)據(jù)報(bào)用于傳送。由 IP 來(lái)確定一致性并計(jì)算校驗(yàn)碼。協(xié)議應(yīng)用此協(xié)議的最主要的用途是網(wǎng)際名稱服務(wù)器和小文件傳輸協(xié)議。協(xié)議號(hào)在 IP 中使用它時(shí),它的協(xié)議號(hào)是 17(八進(jìn)制中是 21) 。1.2UD
16、P 協(xié)議 軟件環(huán)境 Microsoft Windows 98 中文版;Windows NT(SP3.0 以上)或 Windows 2000 操作系統(tǒng);Delphi 6.0。9 / 23 文檔可自由編輯打印二、UDP 協(xié)議簡(jiǎn)介2.1UDP 的定義UDP(User Datagram Protocol)協(xié)議就是“用戶數(shù)據(jù)報(bào)協(xié)議”,它是一種無(wú)連接的協(xié)議,無(wú)連接主要是和 TCP 協(xié)議相比較的。我們知道當(dāng)利用 TCP 協(xié)議傳送數(shù)據(jù)的時(shí)候,首先必須先建立連接(也就是所謂的握手)才可以傳輸數(shù)據(jù)。而當(dāng)計(jì)算機(jī)利用 UDP 協(xié)議進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候,發(fā)送方只需要知道對(duì)方的 IP 地址和端口號(hào)就可以發(fā)送數(shù)據(jù),而并不需要
17、進(jìn)行連接。當(dāng)然如果你非要進(jìn)行連接,通過(guò) VisualB也是可以實(shí)現(xiàn)的,但前提是要確定連接的遠(yuǎn)程主機(jī)的端口號(hào)處于監(jiān)聽狀態(tài),否則程序會(huì)出現(xiàn)不必要的錯(cuò)誤,但這是種畫蛇添足的做法,不僅丟失了 UDP 協(xié)議的無(wú)連接傳送數(shù)據(jù)的特點(diǎn)和優(yōu)點(diǎn),而且還給程序運(yùn)行帶來(lái)了不安定的因素。所以這種方法并不值得提倡。2.2UDP 的組成UDP 信息包由 UDP 標(biāo)題和數(shù)據(jù)組成。UDP 的標(biāo)題結(jié)構(gòu)如圖 15-21 所示,它由 5 個(gè)域組成:服務(wù)器(socket( )、客戶機(jī)(socket( )、用戶數(shù)據(jù)包的長(zhǎng)度(Length)和檢查和(Checksum)。其中,前 4個(gè)域組成 UDP 標(biāo)題(UDPheader),每個(gè)域由 4
18、 個(gè)字節(jié)組成;檢查和域占據(jù) 2 個(gè)字節(jié),它用來(lái)檢測(cè)傳輸過(guò)程中是否出現(xiàn)了錯(cuò)誤;用戶數(shù)據(jù)包的長(zhǎng)度包括所有 5 個(gè)域的字節(jié)數(shù)。10 / 23 文檔可自由編輯打印 服務(wù)器 socket( ) bind( ) recvfrom( ) sendto( ) 阻塞,等待客戶數(shù)據(jù) 處理服務(wù)請(qǐng)求 socket( ) bind( ) sendto( ) recvfrom( ) 客戶機(jī) 服務(wù)請(qǐng)求 服務(wù)應(yīng)答 無(wú)連接套接口應(yīng)用程序時(shí)序圖 closesocket( ) closesocket( ) UDP 信息包的標(biāo)題結(jié)構(gòu)檢查和的詳細(xì)計(jì)算可在 RFC1071 中找到,現(xiàn)舉一例說(shuō)明使用檢查和檢測(cè)錯(cuò)誤的道理。例如,假設(shè)從源端
19、A 要發(fā)送下列 3 個(gè) 16 位的二進(jìn)制數(shù):word1,word2 和 word3 到終端 B,檢查和計(jì)算如下: word100110word210101word301111sum=word1+ word2+ word311010檢查和(sum 的反碼)10101從發(fā)送端發(fā)出的 4 個(gè)(word1,2,3 以及檢查和)16 位二進(jìn)制數(shù)之和為 1111111111111111,如果接收端收到的這 4 個(gè) 16 位二進(jìn)制數(shù)之和也是全“1”,就認(rèn)為傳輸過(guò)程中沒(méi)有出差錯(cuò)。許多鏈路層協(xié)議都提供錯(cuò)誤檢查,包括流行的以太網(wǎng)協(xié)議,讀者也許想知道為什么 UDP 也要提供檢查和。其原因是鏈路層以下的協(xié)議在源端和終
20、端之間的某些通道可能不提供錯(cuò)誤檢測(cè)。雖11 / 23 文檔可自由編輯打印然 UDP 提供有錯(cuò)誤檢測(cè),但檢測(cè)到錯(cuò)誤時(shí),UDP 不做錯(cuò)誤校正,只是簡(jiǎn)單地把損壞的消息段扔掉,或者給應(yīng)用程序提供警告信息。讀者也可能會(huì)問(wèn),收發(fā)兩端的兩個(gè)進(jìn)程是否有可能通過(guò) UDP 提供可靠的數(shù)據(jù)傳輸?答案是可以的。但必需要把確認(rèn)和重傳措施加到應(yīng)用程序中,應(yīng)用程序不能指望 UDP 來(lái)提供可靠的數(shù)據(jù)傳輸。由于 UDP 協(xié)議并不需要進(jìn)行確定的連接,所以編寫基于 UDP 協(xié)議的應(yīng)用程序比起編寫基于TCP 協(xié)議的應(yīng)用程序要簡(jiǎn)單些(程序中可以不需要考慮連接和一些異常的捕獲工作) 。但同時(shí)也給基于 UDP 協(xié)議編寫的程序帶來(lái)了一個(gè)致命
21、的缺點(diǎn),UDP 由于不提供可靠數(shù)據(jù)的傳輸,當(dāng)計(jì)算機(jī)之間利用 UDP 協(xié)議傳送數(shù)據(jù)的時(shí)候,發(fā)送方只管發(fā)送數(shù)據(jù),而并不確認(rèn)數(shù)據(jù)是否被對(duì)方接收。這樣就會(huì)導(dǎo)致某些 UDP 協(xié)議數(shù)據(jù)包在傳送的過(guò)程中丟失,尤其網(wǎng)絡(luò)質(zhì)量不令人滿意的情況下,丟失數(shù)據(jù)包的現(xiàn)象會(huì)更嚴(yán)重。這就是為什么在網(wǎng)絡(luò)上傳輸重要數(shù)據(jù)不采用 UDP 協(xié)議的原因。但是我們也不能因?yàn)檫@一個(gè)缺點(diǎn)就全面否定 UDP 協(xié)議,這是因?yàn)殡m然利用 UDP 協(xié)議來(lái)傳送安全性要求高的數(shù)據(jù)是不適合的,但對(duì)于那些不重要的數(shù)據(jù),或者即使丟失若干數(shù)據(jù)包也不影響整體性的數(shù)據(jù),如音頻數(shù)據(jù),視頻數(shù)據(jù)等,采用 UDP 協(xié)議就是一個(gè)非常不錯(cuò)的選擇。如目前網(wǎng)絡(luò)流行的很多即時(shí)聊天程序,
22、如 OICQ 和 ICQ 等,采用的就是 UDP 協(xié)議。同時(shí)雖然 UDP 協(xié)議無(wú)法保證數(shù)據(jù)可靠性,但具有對(duì)網(wǎng)絡(luò)資源開銷較小,數(shù)據(jù)處理速度快的優(yōu)點(diǎn),所以在有些對(duì)數(shù)據(jù)安全性要求不是很高的情況下,采用 UDP 協(xié)議也是一個(gè)非常不錯(cuò)的選擇??偨Y(jié)一下上面的內(nèi)容,可見 UDP 是一種不面向連接的網(wǎng)絡(luò)協(xié)議,既有其優(yōu)點(diǎn),也有其不足,具體如下:1.基于 UDP 協(xié)議的網(wǎng)絡(luò)應(yīng)用程序,實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,并且基于 UDP 協(xié)議的網(wǎng)絡(luò)應(yīng)用程序在運(yùn)行時(shí),由于受到環(huán)境影響較小,所以不容易出錯(cuò)。2.UDP 協(xié)議占用網(wǎng)絡(luò)資源較少,數(shù)據(jù)處理較快,所以在網(wǎng)絡(luò)中傳送對(duì)安全性要求不是十分高數(shù)據(jù)時(shí),其優(yōu)點(diǎn)比較明顯。所謂對(duì)安全性要求不高的
23、數(shù)據(jù),是指那些不重要的數(shù)據(jù),或者是即使丟失若干數(shù)據(jù),也不影響其整體的數(shù)據(jù),如音頻數(shù)據(jù)等。目前很多流行的網(wǎng)絡(luò)應(yīng)用程序都是基于UDP 協(xié)議的,如 QQ、UC,百度 HI,MSN 等。3.由于其不是面向連接的網(wǎng)絡(luò)協(xié)議,其缺點(diǎn)也是非常明顯的,有些時(shí)候甚至是致命的。因?yàn)槭褂?UDP 協(xié)議來(lái)傳送數(shù)據(jù),在數(shù)據(jù)發(fā)送后,在發(fā)送方并不確認(rèn)對(duì)方是否接收到。這樣就可能導(dǎo)致傳送的數(shù)據(jù)在網(wǎng)絡(luò)中丟失,尤其在網(wǎng)絡(luò)條件并不很好的情況下,丟失數(shù)據(jù)包的現(xiàn)象就更多。所以傳送重要數(shù)據(jù)一般不采用 UDP 協(xié)議。12 / 23 文檔可自由編輯打印 三、利用 VB 語(yǔ)言設(shè)計(jì)網(wǎng)絡(luò)聊天系統(tǒng)現(xiàn)在大多數(shù)語(yǔ)言都支持客戶服務(wù)器模式編程,其中 VB 給我
24、們提供了很好的客戶服務(wù)器編程方式。下面我用 VB 來(lái)實(shí)現(xiàn) TCPIP 網(wǎng)絡(luò)編程。TCPIP 協(xié)議是 Internet 最重要的協(xié)議。VB 提供了 WinSock 控件,用于在 TCPIP 的基礎(chǔ)上進(jìn)行網(wǎng)絡(luò)通信。當(dāng)兩個(gè)應(yīng)用程序使用 Socket 進(jìn)行網(wǎng)絡(luò)通信時(shí),其中一個(gè)必須創(chuàng)建 Socket 服務(wù)器偵聽,而另一個(gè)必須創(chuàng)建 Socket 客戶去連接服務(wù)器。這樣兩個(gè)程序就可以進(jìn)行通信了。31 創(chuàng)建服務(wù)器端首先創(chuàng)建一個(gè)服務(wù)端口號(hào)。并開始偵聽是否有客戶請(qǐng)求連接。建立一窗體,并向其增加一個(gè)Winsock 控件(可在工程菜單中的部件項(xiàng)來(lái)添加此控件)添加兩文本框 Text1,Text2,和一按鈕Command
25、1 Private Sub Form_Load()SockServer.LocalPort = 2000 服務(wù)器端口號(hào),最好大于 1000SockServer.Listen 開始偵聽End SubPrivate Sub Form_Unload(Cancel As Integer)13 / 23 文檔可自由編輯打印SockServer.CloseEnd SubPrivate Sub SockServer_Close()SockServer.CloseEnd SubPrivate Sub SockServer_ConnectionRequest(ByVal requestID As Long)So
26、ckServer.Close SockServer.Accept requestID 表示客戶請(qǐng)求連接的 ID 號(hào)End Sub當(dāng)客戶向服務(wù)器發(fā)送數(shù)據(jù)到達(dá)后,產(chǎn)生 DataArrival 事件,在事件中接收數(shù)據(jù),GetData 方法接收數(shù)據(jù)。Private Sub SockServer_DataArrival(ByVal bytesTotal As Long)Dim s As StringSockServer.GetData sText1.Text = sEnd Sub當(dāng)我需要向客戶發(fā)送數(shù)據(jù)時(shí),只需調(diào)用 SendData 方法。Private Sub Command1_Click()SockS
27、erver .SendData Text2.TextEnd Sub32 創(chuàng)建客戶端要?jiǎng)?chuàng)建客戶連接服務(wù)器,首先設(shè)置服務(wù)器主機(jī)名,如 IP 地址、域名或計(jì)算機(jī)名,然后設(shè)置服務(wù)器端口,最后連接服務(wù)器。建立一窗體,并向其增加一個(gè) Winsock 控件(可在工程菜單中的部件項(xiàng)來(lái)添加此控件),取名為:SockC1。添加兩文本框 Text1,Text2,和一按鈕 Command1Private Sub Form_Load()SockCl.RemoteHost =127.0.0.1表示服務(wù)器主機(jī)名SockCl.RemotePort = 2000 表示服務(wù)器端口名14 / 23 文檔可自由編輯打印SockCl.
28、Connect連接到服務(wù)器 End SubPrivate Sub Form_Unload(Cancel As Integer)SockCl.CloseEnd SubPrivate Sub SockCl_Close()SockCl.CloseEnd SubPrivate Sub SockCl_DataArrival(ByVal bytesTotal As Long)Dim s As StringSockCl.GetData s 接收數(shù)據(jù)到文本框中Text1.Text = sEnd SubPrivate Sub Command1_Click()SockCl.SendData Text2.Text
29、向服務(wù)器發(fā)送數(shù)據(jù)End Sub33 進(jìn)行通信鏈接把這兩個(gè)窗體分別編譯成兩個(gè) EXE 文件,服務(wù)器 Server.exe 和客戶 Client.exe 程序,并把它們分別安裝在服務(wù)器端和客戶端,這樣就可以實(shí)現(xiàn)兩者通信了15 / 23 文檔可自由編輯打印四、網(wǎng)絡(luò)聊天軟件的驗(yàn)證1.首先輸入主機(jī)名(IP 地址)和自己的昵稱。圖 32.接著點(diǎn)擊連接按鈕和主機(jī)進(jìn)行連接16 / 23 文檔可自由編輯打印圖 43.在發(fā)送欄里輸入文字(ddd) ,點(diǎn)擊發(fā)送。圖 54.結(jié)束時(shí)點(diǎn)擊斷開即可。UDP 聊天軟件驗(yàn)證成功。17 / 23 文檔可自由編輯打印總結(jié)本文詳細(xì)介紹了 UDP 協(xié)議,Net WinSock SDK
30、提供給 Visual B用以操作 UDP 協(xié)議的主要類庫(kù),以及通過(guò)一個(gè)具體而使用的示例實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)聊天系統(tǒng),介紹在 Visual B實(shí)現(xiàn) UDP 協(xié)議的具體方法和過(guò)程。UDP 由于其自身的缺點(diǎn)注定在某些領(lǐng)域無(wú)法利用它,但在可以利用它的領(lǐng)域,UDP 以其快捷、簡(jiǎn)單、實(shí)用的特點(diǎn)正在受到更多程序員的歡迎。尤其在現(xiàn)代,網(wǎng)絡(luò)運(yùn)行態(tài)勢(shì)越來(lái)越好的情況下,可以預(yù)見的是 UDP 在網(wǎng)絡(luò)中的應(yīng)用情景將更廣闊。希望本文的內(nèi)容對(duì)您掌握用 Visual B編寫基于 UDP 的網(wǎng)絡(luò)應(yīng)用程序有所幫助。 18 / 23 文檔可自由編輯打印謝 辭經(jīng)過(guò)幾個(gè)月的努力,準(zhǔn)備資料,查證資料、整理資料、編寫論文,最后終于順利的完成論文。
31、回首自己求學(xué)期間的點(diǎn)點(diǎn)滴滴,無(wú)數(shù)感慨涌上心頭。時(shí)光匆匆飛逝,三年多的努力與付出,隨著論文的完成,終于給自的大學(xué)生活劃下了句點(diǎn)。 通過(guò)此次的論文的寫作,我學(xué)到了很多知識(shí),跨越了傳統(tǒng)方式下的教與學(xué)的體制束縛,在論文的寫作過(guò)程中,通過(guò)查資料和搜集有關(guān)的文獻(xiàn),培養(yǎng)了自學(xué)能力和動(dòng)手能力。論文得以完成,離不開趙陳粟指導(dǎo)老師的悉心指導(dǎo),在此真誠(chéng)的感謝趙老師的無(wú)私幫助和關(guān)懷??傊舜握撐牡膶懽鬟^(guò)程,我收獲了很多,即為大學(xué)三年劃上了一個(gè)完美的句號(hào),也為將來(lái)的人生之路做好了一個(gè)很好的鋪墊。 19 / 23 文檔可自由編輯打印參考文獻(xiàn)參考資料:Visual Basic 程序設(shè)計(jì)教程 何瑞麟 科學(xué)出版社Visual
32、 Basic 與 Internet 程序設(shè)計(jì) 黃嘉輝 科學(xué)出版社VB6 程序員指南 Microsoft ; Windows API 參考手冊(cè)Windows 高級(jí)編程指南 Jeffrey Richter 王書洪譯清華大學(xué)出版社計(jì)算機(jī)網(wǎng)絡(luò) ; 軟件工程參考網(wǎng)站:中國(guó)協(xié)議分析網(wǎng)太平洋電腦網(wǎng)軟件資訊頻道20 / 23 文檔可自由編輯打印附錄1.服務(wù)器端Private Sub Form_Load()SockServer.LocalPort = 2000 服務(wù)器端口號(hào),最好大于 1000SockServer.Listen 開始偵聽End SubPrivate Sub Form_Unload(Cancel As Integer)SockServer.CloseEnd SubPrivate Sub SockServer_Close()SockServer.CloseEnd SubPrivate
溫馨提示
- 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ǔ)文面試唐詩(shī)三首教學(xué)設(shè)計(jì)
- 兩位好友合作經(jīng)營(yíng)店鋪合同模板
- 個(gè)人與個(gè)人借款合同范本
- 中外合資企業(yè)采購(gòu)合同中英文對(duì)照
- 中外合資經(jīng)營(yíng)企業(yè)合同(適用于零售連鎖業(yè)務(wù))
- 個(gè)人二手房交易合同擔(dān)保協(xié)議書
- 專利交易合同協(xié)議
- 個(gè)人向企業(yè)借款合同樣板
- 個(gè)人與公司合作承包項(xiàng)目合同
- 專業(yè)帶小孩勞動(dòng)合同范本
- 小學(xué)生作文方格紙A4紙直接打印版
- 老人心理特征和溝通技巧
- 幼兒阿拉伯?dāng)?shù)字描紅(0-100)打印版
- 標(biāo)桿地產(chǎn)集團(tuán) 研發(fā)設(shè)計(jì) 工程管理 品質(zhì)地庫(kù)標(biāo)準(zhǔn)研發(fā)成果V1.0
- TMS開發(fā)業(yè)務(wù)需求文檔
- 2023年1月浙江高考英語(yǔ)聽力試題及答案(含MP3+錄音原文)
- HI-IPDV10芯片產(chǎn)品開發(fā)流程V10宣課件
- 房產(chǎn)抵押注銷申請(qǐng)表
- 【課件】第三課 蒙娜麗莎 課件高中美術(shù)湘美版美術(shù)鑒賞
- 象數(shù)療法好療效
- A320系列飛行訓(xùn)練課程:電子飛行儀表系統(tǒng)概況
評(píng)論
0/150
提交評(píng)論