基于udp的程序設計_第1頁
基于udp的程序設計_第2頁
基于udp的程序設計_第3頁
基于udp的程序設計_第4頁
基于udp的程序設計_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課程設計 HI 課程設計設計說明書基于UDP的程序設計 _學生姓名NX學號1435354687班級計算機1303成績一指導教師一NBVC數(shù)學與計算機科學學院2016年9月9日課程設計任務書20162017學年第1學期課程設計名稱:課程設計HI課程設計課程設計題目:基于UDP的程序設計完成期限:自2016年 8 月 29 日至2015 年 9 月9 日共 2 周設計內容:1.任務說明 UDP是 TCP/IP協(xié)議族為傳輸層設計的兩個協(xié)議之一,它在進程與進程的通信過程中,提供了有限的差錯校驗功能,是一種無連接的,不可靠的協(xié)議。我們要編寫程序,設計一個基于UDP的服務器。指導教師:教研室負責人:課程設

2、計評閱評語:指導教師簽名:年 月 日摘要UDP是TCP/IP協(xié)議族為傳輸層設計的兩個協(xié)議之一,它在進程與進程的通信過程中,提供了有限的差錯校驗功能, 是一種無連接的, 不可靠的協(xié)議。 根據(jù)后 UDP 協(xié)議的工作原理, 編寫程序實現(xiàn)基于 UDP 的 服務器。 以命令行形式運行: 1、UdpServer serve_port 其中, UdpServer 為程序名, server_port 為 服務器使用的端口號。 2、輸出內容:服務器與客戶端的交互過程,例如: UDP Server Recceive:.UDPServer Send:.關鍵詞 :UDP; 程序設計1課題描述 . . 22設計需求 .

3、 33設計過程 . 44設計代碼 . 65總結 . 10參考文獻 . . 1121 課題描述UDP是 TCP/IP協(xié)議族為傳輸層設計的兩個協(xié)議之一,它在進程與進程的通信過程中,提供了有限 的差錯校驗功能,是一種無連接的,不可靠的協(xié)議。UDP在一個較低的水平上完成進程之間的通信,在收到分組的時候沒有流量控制機制也沒有確認機制,適用于可靠性比較高的局域網(wǎng)。由于UDP采取了無連接的方式,因此協(xié)議簡單,在一些特定的應用中協(xié)議運行效率高。UDP適合一些實時的應用,如IP 電話,視頻會議,它們要求源主機以恒定的速率發(fā)送數(shù)據(jù),并且在網(wǎng)絡出現(xiàn)擁塞時,可以丟失一些 數(shù)據(jù),但是延遲不能太大?;谶@些特點,流式多媒

4、體通信、多播等應用在傳輸層采用的就是UDP協(xié)議。因為UDP具有TCP所望塵莫及的速度優(yōu)勢。雖然 TCP協(xié)議中植入了各種安全保障功能,但是在實 際執(zhí)行的過程中會占用大量的系統(tǒng)開銷,無疑使速度受到嚴重的影響。反觀UDP由于排除了信息可靠傳遞機制,將安全和排序等功能移交給上層應用來完成,極大降低了執(zhí)行時間,使速度得到了保證。32 設計需求UDP 協(xié)議是一種無連接的 不可靠的傳輸層協(xié)議。 從應用層的角度來看, UDP 協(xié)議在網(wǎng)絡 層 的 IP 協(xié)議的基礎上,向應用層的程序提供不可靠的數(shù)據(jù)包傳輸服務。UDP 協(xié)議為上面的應用層提供傳輸服務。 UDP 協(xié)議主要用于對傳輸效率要求很高的應用層協(xié)議,例如引導協(xié)

5、 議 (BOOT)P 網(wǎng)絡時間協(xié)議 (NTP) 簡單網(wǎng)絡管理協(xié)議 ( SNM)P 簡單的文件傳輸協(xié)議 (TFTP) 等。另外,域名服務器(DNS)同時依賴于TCP與UDP協(xié)議。由于UDP協(xié)議采用無連接的 工作方式, 并且只提供有限的差錯控制, 因此 UDP 協(xié)議簡單并且執(zhí)行效率很高。 UDP 協(xié)議 沒有采用基于窗口的流量控制機制, 當數(shù)據(jù)包過多時在接收端可能會出現(xiàn)溢出, 接收端無 法判斷在傳輸中出現(xiàn)那種錯誤,應用層還需要提供一定的差錯控制功能。目前,一些實用 要求一恒定速率發(fā)送數(shù)據(jù),并且在網(wǎng)絡出現(xiàn)擁塞時可以丟失一些數(shù)據(jù),但是不希望數(shù)據(jù)傳 輸?shù)臅r延太大, UDP 協(xié)議正好可以適應這種需求。 基于

6、 UDP 協(xié)議的網(wǎng)絡應用也采用客戶 機/ 服務器模式。 在這里, 客戶機與服務器表示互相通信的兩個應用程序的進程, 它們分別 被稱為 UDP 客戶機與 UDP 服務器。 UDP 服務器是指提供某種網(wǎng)絡服務的應用進程,它通 過熟知端口號來向客戶提供服務。(1)C+編程技術(2)TCP/IP 協(xié)議技術在TCP/ IP協(xié)議族中,有兩個互不相同的傳輸協(xié)議:T C P (傳輸控制協(xié)議)和U D P (用戶數(shù)據(jù)報協(xié)議)。T C P為兩臺主機提供高可靠性的數(shù)據(jù)通信。它 所做的工作包括把應用程序交給它的數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡層,確認接收到 的分組,設置發(fā)送最后確認分組的超時時鐘等。由于運輸層提供了高

7、可靠性的端到端的通 信,因此應用層可以忽略所有這些細節(jié)。而另一方面,U D P 則為應用層提供一種非常簡單的服務。它只是把稱作數(shù)據(jù)報的分組從一臺主機發(fā)送到另一臺主機,但并不保證該 數(shù)據(jù)報能到達另一端。任何必需的可靠性必須由應用層來提供。(3)TCP/IP 協(xié)議與 Winsock 網(wǎng)絡編程接口Winsock 規(guī)范不是一種網(wǎng)絡協(xié)議,而是一套開放的、支持多種協(xié)議的Windows 寫的網(wǎng)絡編程接口。 Winsock 可以訪問很多種網(wǎng)絡協(xié)議,可以把它當作一種協(xié)議的封裝?,F(xiàn)在的 Winsock 已經基本上實現(xiàn)了與協(xié)議無關,可以使用 Winsock 來調用協(xié)議的功能(4)Winsock API 的使用下面給

8、出了使用 Winsock 進行編程時涉及的主要函數(shù):WSAStartup 函數(shù)、WSACIeanup函數(shù)、socket 函數(shù)、closesocket 函數(shù)、send 函數(shù)、recv 函數(shù)、 bind 函數(shù)、 listen 函數(shù)、 accept 函數(shù)、 connect 函數(shù)43設計過程首先編寫兩個程序分別為客戶器與服務器,使得兩者建立連接,在客戶器中發(fā)送命令然后等待服務器提供相應的反映,具體實現(xiàn)如下:對于UDP服務器端,服務程序首先調用套接口函數(shù)socket(),然后調用綁定IP地址和協(xié)議端口號函數(shù)bind()。之后調用函數(shù)recvfrom()接收客戶數(shù)據(jù),調用sendto()向客戶發(fā)送數(shù)據(jù)。對

9、于UDP客戶端,客戶機程序啟動后調用套接口函數(shù)socket(),然后調用sendto()向服務器發(fā)送數(shù)據(jù),調用recvfrom()接收服務器數(shù)據(jù)。雙方數(shù)據(jù)交換成功后,各自調用關閉套接口函數(shù)close()關閉套接口。 UDP套接口通信方式。具體流程圖如下:客戶機一方的工作流程如下:5(1)打開通信信道(申請一個套接字),并連接到服務器在主機的保留端口,該端口對應服務器的UDP進程。(2) 向服務器發(fā)出請求報文,等待接收應答。(3) 從服務器方收到最終應答結果,或在不再請求時關閉信道并終止客戶機進程。 服務器一方的工作流程如下:(1) 打開通信信道 ( 申請一個套接字 ) ,通知本地主機在某一保留

10、端口接收客戶機請求。(2) 等待客戶機請求到達指定端口。(3) 接收到請求,啟動一個新進程處理用戶請求,同時釋放舊進程以響應新的客戶請求, 一旦服務完成,關閉新進程與客戶的通信鏈路。(4) 繼續(xù)等待客戶機請求。(5) 如果不想響應客戶機請求,關閉服務器進程。64 設計代碼#include #include#include#include#include#pragma comment(lib,ws2_32.lib)void main(int argc,char* argv)/ 檢查輸入命令格式if(argc!=2)coutplease input command:UdpServer server

11、_portendl; return;/ 建立與 Socket 庫綁定WSADATA WSAData; if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0)coutWSAStartup error!endl;return;/ 創(chuàng)建數(shù)據(jù)報 SocketSOCKET sock; sock=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); if(sock=INVALID_SOCKET)coutSocket create error!endl;return;/ 初始化本地 Socketsockaddr_in serveraddr; server

12、addr.sin_family=AF_INET; serveraddr.sin_port=htons(unsigned short)atoi(argv1); serveraddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);int serveraddrlen=sizeof(serveraddr);/ 端口與 IP 地址綁定int nBind; nBind=bind(sock,(sockaddr*)&serveraddr,sizeof(serveraddr); if(nBind=SOCKET_ERROR)coutendlSocket bind error!e

13、ndl;return;/ 初始化遠程 Socket7sockaddr_in clientaddr;int clientaddrlen=sizeof(clientaddr);while(true)/ 設置接收緩沖區(qū)char recvbuf20; memset(recvbuf,0,sizeof(recvbuf);/ 通過端口接收數(shù)據(jù)int nRecv;nRecv=recvfrom(sock,recvbuf,sizeof(recvbuf),0,(sockaddr*)&clientaddr,&clie ntaddrlen);if(nRecv=SOCKET_ERROR)coutSocket receiv

14、e error!endl; return;coutUDP Server Receive: recvbufendl;/ 設置發(fā)送緩沖區(qū)char sendbuf1500;memset(sendbuf,0,sizeof(sendbuf);/ 判斷命令類型 if(strcmp(recvbuf,getfile)=0) fstream infile;infile.open(input,ios:in|ios:nocreate); infile.seekg(0,ios:end); int nlength=infile.tellg(); infile.seekg(0,ios:beg); infile.read(

15、sendbuf,nlength);/ 通過端口發(fā)送數(shù)據(jù)int nSend;nSend sendto(sock,sendbuf,strlen(sendbuf),0,(sockaddr*)&clientaddr,clientaddrlen);if(nSend = SOCKET_ERROR) coutSocket send error!endl; return; if(strcmp(recvbuf,gettime)=0)/ 獲得當前系統(tǒng)時間 time_t CurTime; time(&CurTime);strftime(sendbuf,sizeof(sendbuf),%Y-%m-%d %H%M:%S

16、,localtime(&CurTime); / 通過端口發(fā)送數(shù)據(jù) int nSend;nSend sendto(sock,sendbuf,sizeof(sendbuf),0,(sockaddr*)&clientaddr,clientaddrlen);8if(nSend=SOCKET_ERROR)coutSocket send errorendl; return;coutudp server snedsendendl;/ 通過端口接收數(shù)據(jù) nRecvrecvfrom(sock,recvbuf,sizeof(recvbuf),0,(sockaddr*)&clientaddr,&clientaddr

17、len)Jif(nRecv = SOCKET_ERROR) coutsocket receive error!endl; return;if(strcmp(recvbuf,command ok)!=0) return; closesocket(sock);WSACleanup();95 總結我們這組的課題是 UDP服務器設計,其主要研究內容在于實現(xiàn)文件的傳輸及接收。我 們首先是了解UDP的定義,即確定 UDP究竟是個什么協(xié)議,它有些什么性質和特征,它應 用于那些方面。經過了解知道了 UDP是TCP/IP協(xié)議族為傳輸層設計的兩個協(xié)議之一,它在進程與進程的通信過程中, 提供了有限的差錯校驗功能,

18、是一種無連接的、 不可靠的協(xié)議。 分析后知道了 UDP其實就是用來實現(xiàn)網(wǎng)絡中文件的傳輸和接收的協(xié)議。知道它的實質后, 接下來我們就開始思考具體的UDP實現(xiàn)的程序,該程序分為客戶端和服務器端兩部分,客戶端主要是執(zhí)行文件或消息的發(fā)送,服務器端則主要是接收這些內容。整個程序最重要也 是最有難度的部分就是如何把發(fā)送和接收兩部分聯(lián)系在一起,經過查閱了一些資料,我們 終于攻克了這個難題,這樣我們就把程序的功能充分的實現(xiàn)出來了。同時在編寫MFC下的服務器和客戶端時, 要注意安全處理種種聯(lián)接請求和斷開請求。 而且這次的課程設計過程 中,我們接觸到了全新的編程方法 -Winsock ,使我們學到了新知識。10、

19、市場分析、建設規(guī)模、產品方案、項目建設地條件錯誤!未定義書簽 錯誤!未定義書簽 錯誤!未定義書簽 錯誤!未定義書簽參考文獻1謝希仁計算機網(wǎng)絡(第6版)M.北京:電子工業(yè)出版社,20133錢能.C+程序設計教程M.北京:清華大學出版社,2003目 錄第一章總論 .一、 項目概況 .二、 項目提出的理由與過程三、 項目建設的必要性四、 項目的可行性.錯誤!未定義書簽 錯誤!未定義書簽。錯誤!未定義書簽。錯誤!未定義書簽。錯誤!未定義書簽。錯誤!未定義書簽錯誤!未定義書簽錯誤!未定義書簽錯誤!未定義書簽第五章技術方案、設備方案和工程方案.錯誤!未定義書簽一、 技術方案 二、 產品特點 三、 主要設備

20、方案四、 工程方案 第六章原材料與原料供應.錯誤!未定義書簽一、 原料來源及運輸方式 . 錯誤!未定義書簽。二、 燃料供應與運輸方式 . 錯誤!未定義書簽。第七章 總圖布置、運輸、總體布局與公用輔助工程.錯誤!未定義書簽一、 總圖布置 . 錯誤!未定義書簽。二、運輸 . 錯誤!未定義書簽。三、 總體布局 . 錯誤!未定義書簽。四、 公用輔助工程 . 錯誤!未定義書簽。第八章 節(jié)能、節(jié)水與安全措施.錯誤!未定義書簽氏代-rfe 第早市場預測.錯誤!未定義書簽二、市場預測 .三、產品市場競爭力分析 .錯誤!未定義書簽錯誤!未定義書簽第三章 建設規(guī)模與產品方案.錯誤!未定義書簽質量標準錯誤!未定義書簽第四章項目建設地點.一、項目建設地點選擇.錯誤!未定義書簽 錯誤!未定義書簽。11一、 主要依據(jù)及標準 . 錯誤!未

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論