




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
/計(jì)算機(jī)網(wǎng)絡(luò)課程設(shè)計(jì)集中上機(jī)實(shí)驗(yàn)報(bào)告學(xué)生:學(xué)號(hào):班級(jí):專業(yè):XX郵電大學(xué)移通學(xué)院20XX12月目錄一.課程設(shè)計(jì)的目的和意義11.1課程設(shè)計(jì)的目的11.2課程設(shè)計(jì)的意義1二.課程設(shè)計(jì)題目和要求22.1UDP服務(wù)器的設(shè)計(jì)22.2UDP服務(wù)器設(shè)計(jì)的要求22.3UDP服務(wù)器的設(shè)計(jì)原理3三.詳細(xì)設(shè)計(jì)43.1需求分析43.2相關(guān)設(shè)計(jì)53.3程序流程63.4客戶機(jī)一方的工作流程73.5服務(wù)器一方的工作流程7四.代碼及注解74.1客戶端程序代碼74.2服務(wù)器端程序9五.程序運(yùn)行結(jié)果分析115.1Windows下的測(cè)試運(yùn)行情況11六.課程設(shè)計(jì)小結(jié)13七.參考書目14課程設(shè)計(jì)的目的和意義1.1課程設(shè)計(jì)的目的目的:設(shè)計(jì)一個(gè)基于UDP的服務(wù)器1.2課程設(shè)計(jì)的意義意義:UDP是TCP/IP協(xié)議族為傳輸層設(shè)計(jì)的兩個(gè)協(xié)議之一.它在進(jìn)程與進(jìn)程的通信過(guò)程中.提供了有限的差錯(cuò)校驗(yàn)功能.是一種無(wú)連接的.不可靠的協(xié)議。UDP在一個(gè)較低的水平上完成進(jìn)程之間的通信.在收到分組的時(shí)候沒(méi)有流量控制機(jī)制也沒(méi)有確認(rèn)機(jī)制.適用于可靠性比較高的局域網(wǎng)。由于UDP采取了無(wú)連接的方式.因此協(xié)議簡(jiǎn)單.在一些特定的應(yīng)用中協(xié)議運(yùn)行效率高。UDP適合一些實(shí)時(shí)的應(yīng)用.如IP電話.視頻會(huì)議.它們要求源主機(jī)以恒定的速率發(fā)送數(shù)據(jù).并且在網(wǎng)絡(luò)出現(xiàn)擁塞時(shí).可以丟失一些數(shù)據(jù).但是延遲不能太大?;谶@些特點(diǎn).流式多媒體通信、多播等應(yīng)用在傳輸層采用的就是UDP協(xié)議。因?yàn)閁DP具有TCP所望塵莫及的速度優(yōu)勢(shì)。雖然TCP協(xié)議中植入了各種安全保障功能.但是在實(shí)際執(zhí)行的過(guò)程中會(huì)占用大量的系統(tǒng)開(kāi)銷.無(wú)疑使速度受到嚴(yán)重的影響。反觀UDP由于排除了信息可靠傳遞機(jī)制.將安全和排序等功能移交給上層應(yīng)用來(lái)完成.極大降低了執(zhí)行時(shí)間.使速度得到了保證。課程設(shè)計(jì)題目和要求2.1UDP服務(wù)器的設(shè)計(jì)UDP是TCP/IP協(xié)議族為傳輸層設(shè)計(jì)的兩個(gè)協(xié)議之一.是一種無(wú)連接的.不可靠的協(xié)議。由于UDP采取了無(wú)連接的方式.因此協(xié)議簡(jiǎn)單.在一些特定的應(yīng)用中協(xié)議運(yùn)行效率高。UDP適合一些實(shí)時(shí)的應(yīng)用.如IP電話、視頻會(huì)議.它們要求源主機(jī)以恒定的速率發(fā)送數(shù)據(jù).并且在網(wǎng)絡(luò)出現(xiàn)擁塞時(shí).可以丟失一些數(shù)據(jù).但是延遲不能太大?;谶@些特點(diǎn).流式多媒體通信、多播等應(yīng)用在傳輸層采用的就是UDP協(xié)議。編寫UDP服務(wù)器程序.流暢地完成視頻文件地傳輸.要能對(duì)多個(gè)客戶端進(jìn)行管理。需要通過(guò)UDP模擬多個(gè)客戶端連接驗(yàn)證的情況。2.2UDP服務(wù)器設(shè)計(jì)的要求編寫程序.設(shè)計(jì)UDP服務(wù)器。因?yàn)榭紤]到實(shí)時(shí)性.所以選擇UDP為主要的網(wǎng)絡(luò)通信技術(shù)。<1>程序能流暢地完成信息內(nèi)容的傳輸和接收。<2>要能對(duì)多個(gè)客服端進(jìn)行管理。需要通過(guò)UDP模擬多個(gè)客服端連接驗(yàn)證的情況。<3>操作系統(tǒng)、使用語(yǔ)言和編譯環(huán)境不限.但在作業(yè)中必須注明。2.3UDP服務(wù)器的設(shè)計(jì)原理UDP是一個(gè)無(wú)連接協(xié)議.傳輸數(shù)據(jù)之前源端和終端不建立連接.當(dāng)它想傳送時(shí)就簡(jiǎn)單地去抓取來(lái)自應(yīng)用程序的數(shù)據(jù).并盡可能快地把它扔到網(wǎng)絡(luò)上。在發(fā)送端.UDP傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度、計(jì)算機(jī)的能力和傳輸帶寬的限制;在接收端.UDP把每個(gè)消息段放在隊(duì)列中.應(yīng)用程序每次從隊(duì)列中讀一個(gè)消息段。C++編程技術(shù)C++是在C語(yǔ)言的基礎(chǔ)上開(kāi)發(fā)的一種集面向?qū)ο缶幊?、泛型編程和過(guò)程化編程于一體的編程語(yǔ)言[1]。應(yīng)用較為廣泛.是一種靜態(tài)數(shù)據(jù)類型檢查的.支持多重編程的通用程序設(shè)計(jì)語(yǔ)言。它支持過(guò)程化程序設(shè)計(jì).數(shù)據(jù)抽象.面向?qū)ο笤O(shè)計(jì).制作圖標(biāo)等多種程序設(shè)計(jì)風(fēng)格。TCP/IP協(xié)議技術(shù)在T
C
P
/
I
P協(xié)議族中.有兩個(gè)互不相同的傳輸協(xié)議:
T
C
P〔傳輸控制協(xié)議和U
D
P〔用戶數(shù)據(jù)報(bào)協(xié)議。T
C
P為兩臺(tái)主機(jī)提供高可靠性的數(shù)據(jù)通信。它所做的工作包括把應(yīng)用程序交給它的數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡(luò)層.確認(rèn)接收到的分組.設(shè)置發(fā)送最后確認(rèn)分組的超時(shí)時(shí)鐘等。由于運(yùn)輸層提供了高可靠性的端到端的通信.因此應(yīng)用層可以忽略所有這些細(xì)節(jié)。而另一方面.
U
D
P則為應(yīng)用層提供一種非常簡(jiǎn)單的服務(wù)。它只是把稱作數(shù)據(jù)報(bào)的分組從一臺(tái)主機(jī)發(fā)送到另一臺(tái)主機(jī).但并不保證該數(shù)據(jù)報(bào)能到達(dá)另一端。任何必需的可靠性必須由應(yīng)用層來(lái)提供。TCP/IP協(xié)議與Winsock網(wǎng)絡(luò)編程接口Winsock規(guī)范不是一種網(wǎng)絡(luò)協(xié)議.而是一套開(kāi)放的、支持多種協(xié)議的Windows寫的網(wǎng)絡(luò)編程接口。Winsock可以訪問(wèn)很多種網(wǎng)絡(luò)協(xié)議.可以把它當(dāng)作一種協(xié)議的封裝?,F(xiàn)在的Winsock已經(jīng)基本上實(shí)現(xiàn)了與協(xié)議無(wú)關(guān).可以使用Winsock來(lái)調(diào)用協(xié)議的功能WinsockAPI的使用下面給出了使用Winsock進(jìn)行編程時(shí)涉及的主要函數(shù):WSAStartup函數(shù)、WSACleanup函數(shù)、socket函數(shù)、closesocket函數(shù)、send函數(shù)、recv函數(shù)、bind函數(shù)、listen函數(shù)、accept函數(shù)、connect函數(shù)詳細(xì)設(shè)計(jì)3.1需求分析隨著信息化的全面建設(shè)和普及中.服務(wù)器的角色舉足輕重.它為計(jì)算機(jī)提供網(wǎng)絡(luò)和技術(shù)的服務(wù).也是整個(gè)網(wǎng)絡(luò)系統(tǒng)的核心部分.中小企業(yè)的建設(shè)會(huì)有很多波折和阻礙.前期是資金問(wèn)題.在服務(wù)器方面秉著少花錢多辦事.高回報(bào)的原則。對(duì)于服務(wù)器方面能省則省.對(duì)于設(shè)置專門的技術(shù)人員維護(hù)服務(wù)器的企業(yè)也是屈指可數(shù)的.所以一般會(huì)選擇服務(wù)器租用服務(wù)和服務(wù)器代維服務(wù).這對(duì)于服務(wù)器方面的開(kāi)支就在可控成本之內(nèi)了。價(jià)格低廉.服務(wù)器有了穩(wěn)定保障.這也是目前很多中小企業(yè)的普遍做法。其次就是在挑選服務(wù)器方面.根據(jù)企業(yè)的實(shí)際業(yè)務(wù).明確規(guī)劃服務(wù)器租用方向是很有必要的.隨著業(yè)務(wù)量的不斷上升.調(diào)整服務(wù)器的配置.從而保證資金和服務(wù)器得到充分利用。目前企業(yè)級(jí)的服務(wù)器大致有文件服務(wù)器.數(shù)據(jù)庫(kù)服務(wù)器.郵件服務(wù)器.web服務(wù)器.多媒體服務(wù)器.終端服務(wù)器等類型。這些服務(wù)器是根據(jù)企業(yè)的不同業(yè)務(wù)設(shè)置的。 UDP服務(wù)器是采用UDP協(xié)議的一類服務(wù)器的統(tǒng)稱。UDP不屬于連接型協(xié)議.因而具有資源消耗小.處理速度快的優(yōu)點(diǎn).所以通常音頻、視頻和普通數(shù)據(jù)在傳送時(shí)使用UDP較多.因?yàn)樗鼈兗词古紶杹G失一兩個(gè)數(shù)據(jù)包.也不會(huì)對(duì)接收結(jié)果產(chǎn)生太大影響。比如我們聊天用的ICQ和QQ就是使用的UDP協(xié)議。所以根據(jù)企業(yè)的發(fā)展方向和業(yè)務(wù)要求.合理的搭配是很有必要的。3.2相關(guān)設(shè)計(jì)設(shè)計(jì)UDP服務(wù)器的過(guò)程如下所示。首先.創(chuàng)建又一個(gè)Socket并監(jiān)聽(tīng)。然后啟動(dòng)線程接收數(shù)據(jù)。用一個(gè)鏈表保存所有連上的客戶.并通知連接成功。這樣.客戶就有機(jī)會(huì)處理這一事件并作一些動(dòng)作。最后.當(dāng)客戶斷開(kāi)時(shí).向服務(wù)器發(fā)送一個(gè)事件.服務(wù)器就可以做一些收尾工作。其中最關(guān)鍵的部分是收發(fā)部分和數(shù)據(jù)處理部分。3.3程序流程Bind<>Bind<>Socket<>Readfrom<>等待客戶請(qǐng)求處理服務(wù)請(qǐng)求Sendto<>Close<>Socket<>Bind<>Sendto<>Readfrom<>Close<>服務(wù)請(qǐng)求服務(wù)應(yīng)答服務(wù)器客戶機(jī)圖2.1服務(wù)器工作流程3.4客戶機(jī)一方的工作流程打開(kāi)通信信道<申請(qǐng)一個(gè)套接字>.并連接到服務(wù)器在主機(jī)的保留端口.該端口對(duì)應(yīng)服務(wù)器的UDP進(jìn)程。向服務(wù)器發(fā)出請(qǐng)求報(bào)文.等待接收應(yīng)答。從服務(wù)器方收到最終應(yīng)答結(jié)果.或在不再請(qǐng)求時(shí)關(guān)閉信道并終止客戶機(jī)進(jìn)程。3.5服務(wù)器一方的工作流程打開(kāi)通信信道<申請(qǐng)一個(gè)套接字>.通知本地主機(jī)在某一保留端口接收客戶機(jī)請(qǐng)求。等待客戶機(jī)請(qǐng)求到達(dá)指定端口。接收到請(qǐng)求.啟動(dòng)一個(gè)新進(jìn)程處理用戶請(qǐng)求.同時(shí)釋放舊進(jìn)程以響應(yīng)新的客戶請(qǐng)求.一旦服務(wù)完成.關(guān)閉新進(jìn)程與客戶的通信鏈路。繼續(xù)等待客戶機(jī)請(qǐng)求。如果不想響應(yīng)客戶機(jī)請(qǐng)求.關(guān)閉服務(wù)器進(jìn)程。代碼及注解4.1客戶端程序代碼#include<winsock2.h>#include<stdio.h>#pragmacomment<lib,"WS2_32">//鏈接到WS2_32.libBOOLInitWinsock<>;//初始化winsockvoidmain<>{ SOCKETsocket1;//定義套接字 InitWinsock<>;//初始化winsock structsockaddr_inserver;//定義結(jié)構(gòu)體 intlen=sizeof<server>;//定義結(jié)構(gòu)體的長(zhǎng)度 server.sin_family=AF_INET;//server的地址族 server.sin_port=htons<1000>;///server的監(jiān)聽(tīng)端口 server.sin_addr.s_addr=inet_addr<"172.16.93.187">;///server的地址 socket1=socket<AF_INET,SOCK_DGRAM,0>;//給套接字賦值 while<1>//使可以循環(huán)輸入 { charbuffer[1024]="\0";//定義緩沖區(qū) printf<"inputmessage\n">;//提示輸入 scanf<"%s",buffer>;//輸入 if<strcmp<buffer,"bye">==0>//比較字符串 break; if<sendto<socket1,buffer,sizeofbuffer,0,<structsockaddr*>&server,len>!=SOCKET_ERROR>//發(fā)送數(shù)據(jù) { if<recvfrom<socket1,buffer,sizeofbuffer,0,<structsockaddr*>&server,&len>!=SOCKET_ERROR>//接受數(shù)據(jù) printf<"recefromserver:%s\n",buffer>; } } closesocket<socket1>;//關(guān)閉套接字}BOOLInitWinsock<>{ intError; WORDVersionRequested;//版本號(hào) WSADATAWsaData; VersionRequested=MAKEWORD<2,2>;//版本2的套接字 Error=WSAStartup<VersionRequested,&WsaData>;//啟動(dòng)WinSock2 if<Error!=0> { returnFALSE; }//加載套接字庫(kù)失敗則返回 else { if<LOBYTE<WsaData.wVersion>!=2||HIBYTE<WsaData.wHighVersion>!=2>//判斷版本 { WSACleanup<>;//解除綁定并釋放空間 returnFALSE; } } returnTRUE;}//如果不是版本2則退出4.2服務(wù)器端程序#include<winsock2.h>#include<stdio.h>#pragmacomment<lib,"WS2_32">//鏈接到WS2_32.libBOOLInitWinsock<>;voidmain<>{ SOCKETsocket1;//定義套接字 InitWinsock<>; structsockaddr_inlocal; structsockaddr_infrom; intfromlen=sizeof<from>; local.sin_family=AF_INET; local.sin_port=htons<1000>;///監(jiān)聽(tīng)端口 local.sin_addr.s_addr=INADDR_ANY;///本機(jī) socket1=socket<AF_INET,SOCK_DGRAM,0>; bind<socket1,<structsockaddr*>&local,sizeoflocal>; while<1> { charbuffer[1024]="\0"; printf<"waitingformessagefromothers\n">; if<recvfrom<socket1,buffer,sizeofbuffer,0,<structsockaddr*>&from,&fromlen>!=SOCKET_ERROR> { printf<"Receiveddatagramfrom%s--%s\n",inet_ntoa<from.sin_addr>,buffer>; ////給cilent發(fā)信息 sendto<socket1,buffer,sizeofbuffer,0,<structsockaddr*>&from,fromlen>; } Sleep<500>; } closesocket<socket1>;}BOOLInitWinsock<>{ intError; WORDVersionRequested; WSADATAWsaData; VersionRequested=MAKEWORD<2,2>; Error=WSAStartup<VersionRequested,&WsaData>;//啟動(dòng)WinSock2 if<Error!=0> { returnFALSE; } else { if<LOBYTE<WsaData.wVersion>!=2||HIBYTE<WsaData.wHighVersion>!=2> { WSACleanup<>; returnFALSE; } } returnTRUE;}程序運(yùn)行結(jié)果分析5.1Windows下的測(cè)試運(yùn)行情況圖1:查詢IP地址將IP地址為
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程項(xiàng)目設(shè)計(jì)成本估算的原則試題與答案
- 2025關(guān)于授權(quán)生產(chǎn)的合同協(xié)議
- 工程項(xiàng)目的社會(huì)影響與經(jīng)濟(jì)分析試題及答案
- 2025商業(yè)店鋪出租合同
- 第三中學(xué)八年級(jí)下學(xué)期期中測(cè)試語(yǔ)文試題(含答案)
- 2025信息技術(shù)轉(zhuǎn)讓合同范本
- 經(jīng)濟(jì)法在中級(jí)經(jīng)濟(jì)師考試中的重要性試題及答案
- 2025沙發(fā)訂購(gòu)合同范本
- 2024年水利水電工程考試知識(shí)點(diǎn)解析試題及答案
- 中級(jí)經(jīng)濟(jì)師考試的復(fù)習(xí)時(shí)間規(guī)劃與試題及答案
- 2024年海南省財(cái)金集團(tuán)有限公司招聘筆試沖刺題(帶答案解析)
- 2024年遼寧鐵道職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及答案解析
- (正式版)JBT 14581-2024 閥門用彈簧蓄能密封圈
- 小學(xué)科學(xué)湘科版六年級(jí)下冊(cè)全冊(cè)同步練習(xí)含答案
- 【危險(xiǎn)化學(xué)品經(jīng)營(yíng)單位安全管理人員】考試600題及解析
- 醫(yī)療護(hù)理中的病人體驗(yàn)與滿意度
- 2023年山東省淄博市中考生物試題
- 廣州市盒馬鮮生供應(yīng)鏈物流成本控制研究
- 實(shí)習(xí)生安全教育培訓(xùn)課件
- 五年級(jí)下冊(cè)數(shù)學(xué)約分練習(xí)200題及答案
- 三年級(jí)下冊(cè)面積單位換算練習(xí)100道及答案
評(píng)論
0/150
提交評(píng)論