




已閱讀5頁,還剩11頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
計算機網絡課程設計計算機網絡課程設計 集中上機實驗報告集中上機實驗報告 學 生: 學 號: 班 級: 專 業: 重慶郵電大學移通學院 2014 年 12 月 1 目錄目錄 一課程設計的目的和意義 .1 1.1 課程設計的目的 .1 1.2 課程設計的意義 .1 二課程設計題目和要求 .2 2.1 UDP 服務器的設計 .2 2.2 UDP 服務器設計的要求 .2 2.3 UDP 服務器的設計原理 .3 三詳細設計 .4 3.1 需求分析 .4 3.2 相關設計 .5 3.3 程序流程 .6 3.4 客戶機一方的工作流程 .7 3.5 服務器一方的工作流程 .7 四代碼及注解 .7 4.1 客戶端程序代碼 .7 4.2 服務器端程序 .9 五程序運行結果分析 .11 5.1 WINDOWS 下的測試運行情況 .11 六課程設計小結 .13 七參考書目 .14 1 一一 課程設計的目的和意義課程設計的目的和意義 1.11.1 課程設計的目的課程設計的目的 目的:設計一個基于 UDP 的服務器 1.21.2 課程設計的意義課程設計的意義 意義:UDP 是 TCP/IP 協議族為傳輸層設計的兩個協議之一,它在進程與 進程的通信過程中,提供了有限的差錯校驗功能,是一種無連接的,不可靠 的協議。UDP 在一個較低的水平上完成進程之間的通信,在收到分組的時候 沒有流量控制機制也沒有確認機制,適用于可靠性比較高的局域網。由于 UDP 采取了無連接的方式,因此協議簡單,在一些特定的應用中協議運行效 率高。UDP 適合一些實時的應用,如 IP 電話,視頻會議,它們要求源主機以 恒定的速率發送數據,并且在網絡出現擁塞時,可以丟失一些數據,但是延 遲不能太大?;谶@些特點,流式多媒體通信、多播等應用在傳輸層采用的 就是 UDP 協議。 因為 UDP 具有 TCP 所望塵莫及的速度優勢。雖然 TCP 協議中植入了各種 安全保障功能,但是在實際執行的過程中會占用大量的系統開銷,無疑使速 度受到嚴重的影響。反觀 UDP 由于排除了信息可靠傳遞機制,將安全和排序 等功能移交給上層應用來完成,極大降低了執行時間,使速度得到了保證。 2 二二 課程設計題目和要求課程設計題目和要求 2.12.1 UDPUDP 服務器的設計服務器的設計 UDP 是 TCPIP 協議族為傳輸層設計的兩個協議之一,是一 種無連接的,不可靠的協議。由于 UDP 采取了無連接的方式,因 此協議簡單,在一些特定的應用中協議運行效率高。UDP 適合一 些實時的應用,如 IP 電話、視頻會議,它們要求源主機以恒定 的速率發送數據,并且在網絡出現擁塞時,可以丟失一些數據, 但是延遲不能太大?;谶@些特點,流式多媒體通信、多播等應 用在傳輸層采用的就是 UDP 協議。 編寫 UDP 服務器程序,流暢 地完成視頻文件地傳輸,要能對多個客戶端進行管理。需要通過 UDP 模擬多個客戶端連接驗證的情況。 2.22.2 UDPUDP 服務器設計的要求服務器設計的要求 編寫程序,設計 UDP 服務器。因為考慮到實時性,所以選擇 UDP 為主要的網絡通信技術。 (1)程序能流暢地完成信息內容的傳輸和接收。 (2)要能對多個客服端進行管理。需要通過 UDP 模擬多個客 服端連接驗證的情況。 (3)操作系統、使用語言和編譯環境不限,但在作業中必須 注明。 3 2.32.3 UDPUDP 服務器的設計原理服務器的設計原理 UDP 是一個無連接協議,傳輸數據之前源端和終端不建立連 接,當它想傳送時就簡單地去抓取來自應用程序的數據,并盡 可能快地把它扔到網絡上。在發送端, UDP 傳送數據的速度僅 僅是受應用程序生成數據的速度、計算機的能力和傳輸帶寬的 限制;在接收端, UDP 把每個消息段放在隊列中,應用程序每 次從隊列中讀一個消息段。 (1)C+編程技術 C+是在 C 語言的基礎上開發的一種集面向對象編程、泛型編 程和過程化編程于一體的編程語言1 。應用較為廣泛,是一種 靜態數據類型檢查的,支持多重編程的通用程序設計語言。它支 持過程化程序設計,數據抽象,面向對象設計,制作圖標等多種 程序設計風格。 (2)TCP/IP 協議技術 在 T C P / I P 協議族中,有兩個互不相同的傳輸協議: T C P(傳輸控制協議)和 U D P(用戶數據報協議) 。T C P 為 兩臺主機提供高可靠性的數據通信。它所做的工作包括把應用程 序交給它的數據分成合適的小塊交給下面的網絡層,確認接收到 的分組,設置發送最后確認分組的超時時鐘等。由于運輸層提供 了高可靠性的端到端的通信,因此應用層可以忽略所有這些細節。 而另一方面, U D P 則為應用層提供一種非常簡單的服務。它只 是把稱作數據報的分組從一臺主機發送到另一臺主機,但并不保 證該數據報能到達另一端。任何必需的可靠性必須由應用層來提 供。 4 (3)TCP/IP 協議與 Winsock 網絡編程接口 Winsock 規范不是一種網絡協議,而是一套開放的、支持多種 協議的 Windows 寫的網絡編程接口。Winsock 可以訪問很多種網 絡協議,可以把它當作一種協議的封裝。現在的 Winsock 已經基 本上實現了與協議無關,可以使用 Winsock 來調用協議的功能 (4)Winsock API 的使用 下面給出了使用 Winsock 進行編程時涉及的主要函數: WSAStartup 函數、WSACleanup 函數、socket 函數、 closesocket 函數、send 函數、recv 函數、bind 函數、listen 函數、accept 函數、connect 函數 三三 詳細設計詳細設計 3.13.1 需求分析需求分析 隨著信息化的全面建設和普及中,服務器的角色舉足輕重, 它為計算機提供網絡和技術的服務,也是整個網絡系統的核心部 分,中小企業的建設會有很多波折和阻礙,前期是資金問題,在 服務器方面秉著少花錢多辦事,高回報的原則。對于服務器方面 能省則省,對于設置專門的技術人員維護服務器的企業也是屈指 可數的,所以一般會選擇服務器租用服務和服務器代維服務,這 對于服務器方面的開支就在可控成本之內了。價格低廉,服務器 有了穩定保障,這也是目前很多中小企業的普遍做法。 其次就是在挑選服務器方面,根據企業的實際業務,明確規 劃服務器租用方向是很有必要的,隨著業務量的不斷上升,調整 5 服務器的配置,從而保證資金和服務器得到充分利用。目前企業 級的服務器大致有文件服務器,數據庫服務器,郵件服務器, web 服務器,多媒體服務器,終端服務器等類型。這些服務器是 根據企業的不同業務設置的。 UDP 服務器是采用 UDP 協議的一類服務器的統稱。UDP 不 屬于連接型協議,因而具有資源消耗小,處理速度快的優點,所 以通常音頻、視頻和普通數據在傳送時使用 UDP 較多,因為它們 即使偶爾丟失一兩個數據包,也不會對接收結果產生太大影響。 比如我們聊天用的 ICQ 和 QQ 就是使用的 UDP 協議。 所以根據企業的發展方向和業務要求,合理的搭配是很有必 要的。 3.3.2 2 相關設計相關設計 設計 UDP 服務器的過程如下所示。 首先,創建又一個 Socket 并監聽。然后啟動線程接收數據。 用一個鏈表保存所有連上的客戶,并通知連接成功。這樣,客戶 就有機會處理這一事件并作一些動作。最后,當客戶斷開時,向 服務器發送一個事件,服務器就可以做一些收尾工作。 其中最關鍵的部分是收發部分和數據處理部分。 6 3.33.3 程序流程程序流程 圖 2.1 服務器工作流程 Bind() Socket() Readfrom() 等待客戶請求 處理服務請求 Sendto() Close() Socket() Bind() Sendto() Readfrom() Close() 服務請求 服務應答 服務器 客戶機 7 3.43.4 客戶機一方的工作流程客戶機一方的工作流程 (1)打開通信信道(申請一個套接字),并連接到服務器在主機的 保留端口,該端口對應服務器的 UDP 進程。 (2)向服務器發出請求報文,等待接收應答。 (3)從服務器方收到最終應答結果,或在不再請求時關閉信道并 終止客戶機進程。 3.53.5 服務器一方的工作流程服務器一方的工作流程 (1)打開通信信道(申請一個套接字),通知本地主機在某一保留 端口接收客戶機請求。 (2)等待客戶機請求到達指定端口。 (3)接收到請求,啟動一個新進程處理用戶請求,同時釋放舊進 程以響應新的客戶請求,一旦服務完成,關閉新進程與客戶 的通信鏈路。 (4)繼續等待客戶機請求。 (5)如果不想響應客戶機請求,關閉服務器進程。 四四 代碼及注解代碼及注解 4.14.1 客戶端程序客戶端程序代碼代碼 #include #include 8 #pragma comment(lib, WS2_32) / 鏈接到 WS2_32.lib BOOL InitWinsock();/初始化 winsock void main() SOCKET socket1; /定義套接字 InitWinsock();/初始化 winsock struct sockaddr_in server; /定義結構體 int len =sizeof(server); /定義結構體的長度 server.sin_family=AF_INET; /server 的地址族 server.sin_port=htons(1000); /server 的監聽端口 server.sin_addr.s_addr=inet_addr(172.16.93.187); /server 的地址 socket1=socket(AF_INET,SOCK_DGRAM,0); /給套接字賦值 while (1) /使可以循環輸入 char buffer1024=0; /定義緩沖區 printf(input messagen); / 提示輸入 scanf(%s,buffer); /輸入 if (strcmp(buffer,bye)=0) /比較字符串 break; if (sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*) closesocket(socket1); /關閉套接字 BOOL InitWinsock() int Error; WORD VersionRequested;/版本號 9 WSADATA WsaData; VersionRequested=MAKEWORD(2,2); /版本 2 的套接字 Error=WSAStartup(VersionRequested, /啟動 WinSock2 if(Error!=0) return FALSE; /加載套接字庫 失敗則返回 else if(LOBYTE(WsaData.wVersion)!=2|HIBYTE(WsaData.wHighV ersion)!=2) /判斷版本 WSACleanup(); /解除綁定并釋放空間 return FALSE; return TRUE; /如果不是版本 2 則退出 4.24.2 服務器端程序服務器端程序 #include #include #pragma comment(lib, WS2_32) / 鏈接到 WS2_32.lib BOOL InitWinsock(); void main() SOCKET socket1;/定義套接字 InitWinsock(); struct sockaddr_in local; struct sockaddr_in from; int fromlen =sizeof(from); 10 local.sin_family=AF_INET; local.sin_port=htons(1000); /監聽端口 local.sin_addr.s_addr=INADDR_ANY; /本機 socket1=socket(AF_INET,SOCK_DGRAM,0); bind(socket1,(struct sockaddr*) while (1) char buffer1024=0; printf(waiting for message from others- -n); if (recvfrom(socket1,buffer,sizeof buffer,0,(struct sockaddr*) /給 cilent 發信息 sendto(socket1,buffer,sizeof buffer,0,(struct sockaddr*) Sleep(500); closesocket(socket1); BOOL InitWinsock() int Error; WORD VersionRequested; WSADATA WsaData; VersionRequested=MAKEWORD(2,2); Error=WSAStartup(VersionRequested, /啟動 11 WinSock2 if(Error!=0) return FALSE; else if(LOBYTE(WsaData.wVersion)!=2|HIBYTE(WsaData.wHighV ersion)!=2) WSACleanup(); return FALSE; return TRUE; 五五 程序運行結果程序運行結果分析分析 5.15.1 WindowsWindows 下的測試運行情況下的測試運行情況 a) 查詢 IP 地址:得到 IP 地址為 172.16.93.187 12 圖 1:查詢 IP 地址 b) 將 IP 地址為 172.16.93.187 的計算機作為客戶端的結果 圖 2:客戶端發送信息 13 c) 服務器接受信息的情況 圖 3:服務器接受信息的狀況 六六 課程設計小結課程設計小結 我們這組的課題是 UDP 服務器設計,其主要研究內容在于實 現文件的傳輸及接收。我們首先是了解 UDP 的定義,即確定 UDP 究竟是個什么協議,它有些什么性質和特征,它應用于那些方面。 經過了解知道了 UDP 是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論