UDP文件傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
UDP文件傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
UDP文件傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
UDP文件傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
UDP文件傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、哈爾濱工程大學(xué)本科生專(zhuān)業(yè)認(rèn)識(shí)實(shí)訓(xùn)專(zhuān)題報(bào)告實(shí)訓(xùn)專(zhuān)題報(bào)告題 目: UDP文件傳輸系的設(shè)計(jì) 實(shí)訓(xùn)名稱(chēng): 班 級(jí): 學(xué) 號(hào): 學(xué)生姓名: 指導(dǎo)教師: 哈爾濱工程大學(xué)2013年8月30日7摘 要UDP(User Datagram Protocol)協(xié)議的全稱(chēng)是用戶(hù)數(shù)據(jù)報(bào)協(xié)議,在網(wǎng)絡(luò)中它與TCP(Transmission Control Protocol)協(xié)議一樣用于處理數(shù)據(jù)包,是一種無(wú)連接的協(xié)議。UDP有不提供數(shù)據(jù)包分組、組裝和不能對(duì)數(shù)據(jù)包進(jìn)行排序的缺點(diǎn),也就是說(shuō),當(dāng)報(bào)文發(fā)送之后,是無(wú)法得知其是否安全完整到達(dá)的。UDP用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。包括網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)在內(nèi)的眾多的客戶(hù)-

2、服務(wù)器模式的網(wǎng)絡(luò)應(yīng)用都需要使用UDP協(xié)議1。UDP協(xié)議從問(wèn)世至今已經(jīng)被使用了很多年,雖然其最初的光彩已經(jīng)被一些類(lèi)似協(xié)議所掩蓋,但是即使是在今天UDP仍然不失為一項(xiàng)非常實(shí)用和可行的網(wǎng)絡(luò)傳輸層協(xié)議。本文在應(yīng)用現(xiàn)有的C語(yǔ)言應(yīng)用開(kāi)發(fā)知識(shí)基礎(chǔ)上,又應(yīng)用了socket和多線(xiàn)程編程技術(shù)的有關(guān)知識(shí)。使用C語(yǔ)言以及標(biāo)準(zhǔn)庫(kù)函數(shù),在Windows平臺(tái)上,開(kāi)發(fā)基于UDP協(xié)議的文件傳輸系統(tǒng)。對(duì)UDP文件傳輸系統(tǒng)的調(diào)試結(jié)果顯示:UDP文件傳輸系統(tǒng)實(shí)現(xiàn)了文件在客戶(hù)端和服務(wù)端之間的發(fā)送和接收,傳輸過(guò)程中可顯示文件信息,在傳輸過(guò)程中可中斷傳輸,但暫時(shí)還不能保證完全不丟包。關(guān)鍵詞:文件傳輸;socket編程技術(shù);基本功能當(dāng)前的世

3、界經(jīng)濟(jì)正在從工業(yè)經(jīng)濟(jì)向知識(shí)經(jīng)濟(jì)轉(zhuǎn)變,這種以知識(shí)為基礎(chǔ)的經(jīng)濟(jì)有兩個(gè)重要的特點(diǎn),就是信息化和全球化。而要實(shí)現(xiàn)信息化和全球化,就必須依靠完善的網(wǎng)絡(luò)。計(jì)算機(jī)網(wǎng)絡(luò)是核心,而信息的交流又是計(jì)算機(jī)網(wǎng)絡(luò)中非常重要的部分,因此UDP協(xié)議就占了很大比重。由于UDP不屬于連接型協(xié)議,因而具有資源消耗小,處理速度快的優(yōu)點(diǎn),所以通常音頻、視頻和普通數(shù)據(jù)在傳送時(shí)使用UDP較多,比如我們聊天用的QQ所使用的就是UDP協(xié)議。雖然UDP是一個(gè)不可靠的協(xié)議,但它是分發(fā)信息的一個(gè)理想?yún)f(xié)議。UDP廣泛應(yīng)用在多媒體應(yīng)用中,例如Progressive Networks公司開(kāi)發(fā)的RealAudio軟件,該軟件所使用的協(xié)議就是基于UDP之上

4、的協(xié)議,大多數(shù)因特網(wǎng)電話(huà)軟件產(chǎn)品也都是基于UDP協(xié)議的。基于以上分析,本文要涉及的UDP文件傳輸系統(tǒng)設(shè)計(jì)是一個(gè)具備基本功能的嵌入式系統(tǒng)。1需求分析與系統(tǒng)總體設(shè)計(jì)1.1 需求分析基于UDP文件傳輸系統(tǒng)應(yīng)包含以下功能:在服務(wù)端和客戶(hù)端實(shí)現(xiàn)基本的文件傳輸;在文件傳輸過(guò)程中顯示文件的信息;在文件傳輸過(guò)程中可以取消文件傳輸過(guò)程。具體目標(biāo)如下:(1)在客戶(hù)端主機(jī)上能讀取一個(gè)txt文件與服務(wù)端主機(jī)進(jìn)行傳輸。(2)在傳輸過(guò)程中能顯示文件信息,如文件名、保存路徑、文件大小、傳輸進(jìn)度等。(3)傳輸過(guò)程中可以選擇中斷文件傳輸過(guò)程。(4)本程序中要保證文件在傳輸?shù)倪^(guò)程中實(shí)現(xiàn)完整傳輸,即不丟包。(5)界面盡量簡(jiǎn)潔大方,

5、程序運(yùn)行時(shí)不要出現(xiàn)異常。本章主要討論了系統(tǒng)的需求分析,從用戶(hù)角度分析系統(tǒng)整體要實(shí)現(xiàn)的功能。需求分析表如表1.1所示。1.2 系統(tǒng)總體設(shè)計(jì)本軟件是為了使文件傳輸變得更加方便、快捷和安全,所以設(shè)計(jì)難點(diǎn)是在傳輸控制方面,對(duì)于本軟件來(lái)說(shuō),用戶(hù)界面設(shè)計(jì)則不是那么重要。程序設(shè)計(jì)過(guò)程主要是通過(guò)Winsock控件進(jìn)行UDP文件傳輸。分別在發(fā)送端和接收端建立控件Winsock,經(jīng)過(guò)對(duì)Winsock控件程序的寫(xiě)入,然后通過(guò)端口號(hào)和IP地址的綁定來(lái)建立聯(lián)系,直接可以傳送文件,而且能準(zhǔn)確地發(fā)送和接收。UDP文件傳輸系統(tǒng)主要是在客戶(hù)端與服務(wù)端之間進(jìn)行文件的傳輸,首先在一臺(tái)計(jì)算機(jī)中選取一個(gè)文件,通過(guò)輸入文件所在位置來(lái)實(shí)現(xiàn)

6、的該文件的讀寫(xiě),然后進(jìn)行分包處理以便于后續(xù)的文件傳送。在文件傳輸過(guò)程中要求顯示文件信息,如文件名、保存路徑、文件大小、傳輸進(jìn)度等,使用戶(hù)清楚文件傳輸?shù)那闆r以便選擇繼續(xù)或取消,所以該軟件還具備隨時(shí)中斷文件傳輸?shù)墓δ?。待文件發(fā)送后,另一臺(tái)計(jì)算機(jī)要求能夠接收該文件并讀取、保存在計(jì)算機(jī)內(nèi)。因此,開(kāi)發(fā)人員需要編寫(xiě)兩方面的代碼,即服務(wù)端代碼和客戶(hù)端代碼,然后再將這兩部分的代碼結(jié)合起來(lái),本程序也不例外,需要編寫(xiě)這兩方面的代碼。系統(tǒng)功能模塊圖如圖1.1所示。UDP文件傳輸系統(tǒng)功能描述:(1)客戶(hù)端與服務(wù)端能夠相互連接; (2)客戶(hù)端與服務(wù)端能進(jìn)行文件的發(fā)送和接收; (3)服務(wù)端能夠完整地接收并讀取客戶(hù)端所發(fā)送

7、的文件; (4)能夠在文件傳輸過(guò)程中中斷該傳輸。需求分析表如表1.1所示表1.1 需求分析表需求功能需求描述文件分包處理1、將一個(gè)文件分成若干小包以便于文件的傳輸文件發(fā)送1、文件能在客戶(hù)端和服務(wù)端之間進(jìn)行傳輸;2、在傳輸過(guò)程中能夠顯示文件信息,如文件名、保存路徑、文件大小、傳輸進(jìn)度等文件接收與讀取1、能夠接收文件;2、能夠讀取文件2 UDP文件傳輸系統(tǒng)基本功能的實(shí)現(xiàn)2.1 實(shí)現(xiàn)“文件分包處理”功能首先使用WSAStartup()函數(shù)檢查系統(tǒng)協(xié)議棧的安裝情況,然后使用socket()函數(shù)創(chuàng)建套接口1,以確定協(xié)議類(lèi)型,再調(diào)用bind()函數(shù)將創(chuàng)建的套接口與本地地址綁定,目的是確定本地地址和端口號(hào)2

8、。然后再在計(jì)算機(jī)中選擇一個(gè)文件進(jìn)行讀取工作,通過(guò)調(diào)用fread,fwrite,fopen,fclose等函數(shù)實(shí)現(xiàn)對(duì)文件的打開(kāi)、讀寫(xiě)和關(guān)閉,通過(guò)輸入文件所在位置來(lái)查找文件,若目標(biāo)文件存在,則繼續(xù)執(zhí)行程序,將所選文件分裝在定義數(shù)組內(nèi),等待傳輸;若目標(biāo)文件不存在,則輸出“ERROR”跳出程序執(zhí)行?;赨DP文件傳輸系統(tǒng)文件分包處理UDP文件傳輸客戶(hù)端控制協(xié)議圖1.1 系統(tǒng)功能模塊圖2.2 實(shí)現(xiàn)“文件傳輸”功能要實(shí)現(xiàn)該功能,需要調(diào)用recvfrom函數(shù)和sendto函數(shù)來(lái)實(shí)現(xiàn)文件的接收功能和發(fā)送功能。文件傳輸結(jié)束后,使用closesocket()函數(shù)關(guān)閉套接口,最后調(diào)用WSACleanup()函數(shù),結(jié)

9、束Windows Sockets API3。2.3 實(shí)現(xiàn)“客戶(hù)端接收”功能首先使用socket()來(lái)建立一個(gè)UDP socket(),第二個(gè)參數(shù)為SOCK_DGRAM。然后初始化sockaddr_in結(jié)構(gòu)變量并賦值。接著使用bind()把上面的socket()和定義的IP地址和端口綁定。這里檢查bind()是否執(zhí)行成功,如果有錯(cuò)誤就退出。這樣可以防止服務(wù)程序重復(fù)運(yùn)行的問(wèn)題。最后進(jìn)入無(wú)限循環(huán)程序,使用recvfrom()進(jìn)入等待狀態(tài),直到接收到客戶(hù)程序發(fā)送的數(shù)據(jù),就處理收到的數(shù)據(jù),并向客戶(hù)程序發(fā)送反饋。這里是直接把收到的數(shù)據(jù)發(fā)回給客戶(hù)程序。UDP文件傳輸系統(tǒng)主界面圖如圖2.1所示。圖2.1 UD

10、P文件傳輸系統(tǒng)主界面圖3 UDP文件傳輸系統(tǒng)的調(diào)試與運(yùn)行隨著計(jì)算機(jī)網(wǎng)絡(luò)的不斷發(fā)展,軟件調(diào)試技術(shù)也逐漸成熟,調(diào)試方法也越來(lái)越多樣化,針對(duì)性更強(qiáng)。大體上來(lái)講軟件調(diào)試可分為兩類(lèi):靜態(tài)調(diào)試和動(dòng)態(tài)調(diào)試。靜態(tài)調(diào)試,即先輸出寄存器的內(nèi)容。在測(cè)試中出現(xiàn)問(wèn)題,設(shè)法保留現(xiàn)場(chǎng)信息。把所有寄存器和主存中有關(guān)部分的內(nèi)容打印出來(lái),進(jìn)行分析研究。用這種方法調(diào)試,輸出的是程序的靜止?fàn)顟B(tài)(程序在某一時(shí)刻的狀態(tài))為取得關(guān)鍵變量的動(dòng)態(tài)值,在程序中插入打印語(yǔ)句。這是取得動(dòng)態(tài)信息的簡(jiǎn)單方法,并可檢驗(yàn)在某時(shí)間后某個(gè)變量是否按預(yù)期要求發(fā)生了變化。此方法的缺點(diǎn)是可能輸出大梁需要分析的信息,必須修改源程序才能插入打印語(yǔ)句,這可能改變關(guān)鍵的時(shí)序

11、關(guān)系,引入新的錯(cuò)誤。而動(dòng)態(tài)調(diào)試則通常利用程序語(yǔ)言提供的調(diào)試功能或?qū)iT(mén)的調(diào)試工具來(lái)分析程序的動(dòng)態(tài)行為。一般程序語(yǔ)言和工具提供的調(diào)試功能有檢查主存和寄存器;設(shè)置斷點(diǎn),即當(dāng)執(zhí)行到特定語(yǔ)句或改變特定變量的值時(shí),程序停止執(zhí)行,以便分析程序此時(shí)的狀態(tài)。4本程序則主要是對(duì)程序的每一個(gè)功能逐一測(cè)試,針對(duì)出現(xiàn)的問(wèn)題不斷調(diào)試,修改代碼,最后達(dá)到滿(mǎn)意的效果。本軟件測(cè)試采用動(dòng)態(tài)測(cè)試方法。其中關(guān)鍵的技術(shù)是如何設(shè)計(jì)有效的測(cè)試用例,以便用最小的代價(jià)達(dá)到測(cè)試的目的。軟件需求測(cè)試結(jié)論在經(jīng)過(guò)對(duì)各模塊的測(cè)試后,已經(jīng)能夠證實(shí)該軟件各方面的能力都可以。只是在支持播放格式上還有待加強(qiáng)。測(cè)試分析報(bào)告是在測(cè)試分析的基礎(chǔ)上,對(duì)測(cè)試的結(jié)果以及測(cè)

12、試的數(shù)據(jù)等加以記錄和分析總結(jié)。它也是測(cè)試過(guò)程中的一個(gè)重要環(huán)節(jié),同時(shí),它也是對(duì)軟件性能的一個(gè)總的分析和認(rèn)可及對(duì)不足之處的說(shuō)明。因此,測(cè)試分析報(bào)告對(duì)于今后對(duì)軟件的功能的加強(qiáng),不足之處的彌補(bǔ)等都起著十分重要的提綱作用。另外,它還有利于今后軟件開(kāi)發(fā)者閱讀原程序,根據(jù)測(cè)試提供的數(shù)據(jù)和結(jié)果,分析原代碼,掌握各函數(shù)的功能和局限性。從而縮短軟件開(kāi)發(fā)者的再開(kāi)發(fā)時(shí)間和所耗費(fèi)的精力。從這方面上,我們不難發(fā)現(xiàn),測(cè)試分析報(bào)告所指明的對(duì)象主要是針對(duì)于軟件開(kāi)發(fā)者5。4 結(jié)論該系統(tǒng)實(shí)現(xiàn)了文件在服務(wù)端與客戶(hù)端之間的傳輸,并對(duì)該傳輸過(guò)程加以控制,即保證文件的完整傳輸和可在傳輸過(guò)程隨時(shí)中斷該過(guò)程。UDP文件傳輸系統(tǒng)的開(kāi)發(fā)主要應(yīng)用了

13、C語(yǔ)言編程技術(shù)和多線(xiàn)程編程技術(shù)。C語(yǔ)言知識(shí)的運(yùn)用使得UDP文件傳輸系統(tǒng)的基本功能很容易地實(shí)現(xiàn)了,對(duì)代碼的優(yōu)化、縮減是對(duì)C語(yǔ)言編程的再一次應(yīng)用。雖然UDP是一種不可靠的網(wǎng)絡(luò)協(xié)議,但是在絕大多數(shù)情況下UDP協(xié)議都是非常有用的,因?yàn)閁DP具有TCP所望塵莫及的速度優(yōu)勢(shì)。雖然TCP協(xié)議中植入了各種安全保障功能,但是在實(shí)際執(zhí)行的過(guò)程中會(huì)占用大量的系統(tǒng)開(kāi)銷(xiāo),無(wú)疑使速度受到了嚴(yán)重的影響。反觀UDP由于排除了信息可靠傳遞機(jī)制,將安全和排序功能交給上層應(yīng)用來(lái)完成,極大,極大降低了執(zhí)行時(shí)間,使速度得到了保證。Winsock規(guī)范不是一種網(wǎng)絡(luò)協(xié)議,而是一套開(kāi)放的、支持多種協(xié)議的Windows寫(xiě)的網(wǎng)絡(luò)編程接口。Wins

14、ock可以訪(fǎng)問(wèn)很多種網(wǎng)絡(luò)協(xié)議,可以把它當(dāng)做一種協(xié)議的封裝。在使用Winsock進(jìn)行編程時(shí),需要在指令中調(diào)用API函數(shù),與Winsock有關(guān)的API,即WSAStartup函數(shù),初始化Winsock服務(wù),才能調(diào)用Winsock API函數(shù);WSACleanup函數(shù),用來(lái)終止Winsock的使用;socket函數(shù)、closesocket函數(shù)、send函數(shù)、recv函數(shù)、bind函數(shù)、 listen函數(shù)、accept函數(shù)、connect函數(shù)等。用connect()調(diào)用建立與另一套接口的連接,連接成功后,即可用send()和recv()傳送數(shù)據(jù)。當(dāng)會(huì)話(huà)結(jié)束后,調(diào)用closesocket()。帶外數(shù)據(jù)根

15、據(jù)規(guī)定用send()和recv()來(lái)接收。如果終端協(xié)議有緩沖區(qū)空間,且數(shù)據(jù)不能在一定時(shí)間成功發(fā)送,則認(rèn)為連接中斷,其后續(xù)的調(diào)用也將以WSAETIMEOUT錯(cuò)誤返回。SOCK_DGRAM類(lèi)型套接口允許使用sendto()和recvfrom()從任意端口發(fā)送或接收數(shù)據(jù)報(bào)。如果這樣一個(gè)套接口用connect()與一個(gè)指定端口連接,則可用send()和recv()與該端口進(jìn)行數(shù)據(jù)報(bào)的發(fā)送與接收。UDP文件傳輸系統(tǒng)雖然可以實(shí)現(xiàn)文件的傳輸,傳輸過(guò)程可現(xiàn)實(shí)文件信息,如文件名、保存路徑、文件大小、傳輸進(jìn)度等,還可以在傳輸過(guò)程中隨時(shí)取消該進(jìn)程,傳輸速度非常快,且操作簡(jiǎn)單,這些都是UDP傳輸系統(tǒng)的優(yōu)點(diǎn)。但是仍然存在很多不足,在傳送小文件時(shí)缺點(diǎn)體現(xiàn)還不明顯,而傳輸大文件時(shí)總是或多或少的存在丟包的現(xiàn)象,該問(wèn)題始終沒(méi)有很好的解決,用戶(hù)界面方面沒(méi)有什么顯著特點(diǎn),不夠美觀,這些還需要后期開(kāi)發(fā)時(shí)再對(duì)UDP文件傳輸系統(tǒng)進(jìn)行改進(jìn)和優(yōu)化。參考文獻(xiàn)1

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論