![CUDP通訊入門與簡單示例_第1頁](http://file4.renrendoc.com/view/590bdf200275c1639422ddaa9f94e368/590bdf200275c1639422ddaa9f94e3681.gif)
![CUDP通訊入門與簡單示例_第2頁](http://file4.renrendoc.com/view/590bdf200275c1639422ddaa9f94e368/590bdf200275c1639422ddaa9f94e3682.gif)
![CUDP通訊入門與簡單示例_第3頁](http://file4.renrendoc.com/view/590bdf200275c1639422ddaa9f94e368/590bdf200275c1639422ddaa9f94e3683.gif)
![CUDP通訊入門與簡單示例_第4頁](http://file4.renrendoc.com/view/590bdf200275c1639422ddaa9f94e368/590bdf200275c1639422ddaa9f94e3684.gif)
![CUDP通訊入門與簡單示例_第5頁](http://file4.renrendoc.com/view/590bdf200275c1639422ddaa9f94e368/590bdf200275c1639422ddaa9f94e3685.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、用則可以使用未被注冊的動態(tài)端口。因為UDP報頭使用兩個字節(jié)存放端口號,所以端口號的有效范圍是從0到65535。一般來說,大于49151的端口號都代表動態(tài)端口。OSI參IETFUDP和TCP協(xié)議正數(shù)據(jù)發(fā)送一方(可收一方則通過目標(biāo)而另外一些網(wǎng)絡(luò)應(yīng)數(shù)據(jù)報的長度是指包括報頭和數(shù)據(jù)部分在內(nèi)的總字節(jié)數(shù)。因為報頭的長度是固定的,所以該域主要被用來計算可變長度的數(shù)據(jù)部分(又稱為數(shù)據(jù)負載)。度根據(jù)操作環(huán)境的不同而各異。從理論上說,包含報頭在內(nèi)的數(shù)據(jù)報的最大長度為字節(jié)。不過,一些實際應(yīng)用往往會限制數(shù)據(jù)報的大小,UDP協(xié)議使用報頭中的校驗值來保證數(shù)據(jù)的安全。殊的算法計算得出,在傳遞到接收方之后,還需要再重新計算。如
2、果數(shù)據(jù)報的最大長65535有時會降低到用則可以使用未被注冊的動態(tài)端口。因為UDP報頭使用兩個字節(jié)存放端口號,所以端口號的有效范圍是從0到65535。一般來說,大于49151的端口號都代表動態(tài)端口。OSI參IETFUDP和TCP協(xié)議正數(shù)據(jù)發(fā)送一方(可收一方則通過目標(biāo)而另外一些網(wǎng)絡(luò)應(yīng)數(shù)據(jù)報的長度是指包括報頭和數(shù)據(jù)部分在內(nèi)的總字節(jié)數(shù)。因為報頭的長度是固定的,所以該域主要被用來計算可變長度的數(shù)據(jù)部分(又稱為數(shù)據(jù)負載)。度根據(jù)操作環(huán)境的不同而各異。從理論上說,包含報頭在內(nèi)的數(shù)據(jù)報的最大長度為字節(jié)。不過,一些實際應(yīng)用往往會限制數(shù)據(jù)報的大小,UDP協(xié)議使用報頭中的校驗值來保證數(shù)據(jù)的安全。殊的算法計算得出,在
3、傳遞到接收方之后,還需要再重新計算。如果數(shù)據(jù)報的最大長65535有時會降低到8192字節(jié)。校驗值首先在數(shù)據(jù)發(fā)送方通過特某個數(shù)據(jù)報在傳輸過程中被第三方篡改或者由于線路噪音等原因受到損壞,發(fā)送和接收方的校驗計算值將不會相符,由此UDP協(xié)議可以檢測是否出錯。這與TCP協(xié)議是不同的,后者要求必須具有校驗值。許多鏈路層協(xié)議都提供錯誤檢查,包括流行的以太網(wǎng)協(xié)議,也許想知道為什么UDP也要提供檢查和。其原因是鏈路層以下的協(xié)議在源端和終端之間的某些通道可能不提供錯誤檢測。雖然UDP提供有錯誤檢測,但檢測到錯誤時,UDP不做錯誤校正,只是簡單地把損壞的消息段扔掉,或者給應(yīng)用程序提供警告信息。UDP協(xié)議的幾個特性
4、(1)UDP是一個無連接協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當(dāng)它想傳送時就簡單地去抓取來自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上。在發(fā)送端,UDP傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應(yīng)用程序每次從隊列中讀一個消息段。(2)由于傳輸數(shù)據(jù)不建立連接,因此一臺服務(wù)機可同時向多個客戶機傳輸相同的消息。(3DUDP信息包的標(biāo)題很短,只有因此也就不需要維護連接狀態(tài),包括收發(fā)狀態(tài)等,8個字節(jié),相對于TCPO20個字節(jié)信息包的額外開銷很小。(4D吞吐量不受擁擠控制算法的調(diào)節(jié),只受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶寬、源端和終端
5、主機性能的限制。(5DUDP使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持復(fù)雜的鏈接狀態(tài)表(這里面有許多參數(shù)D。UDP是UserDatagramProtocolODO,中文名是用戶數(shù)據(jù)包協(xié)議,是考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)。它是RFC768是UDP的正式規(guī)范。UDP報頭UDP報頭由4個域組成,其中每個域各占用2個字節(jié),具體如下:源端口號目標(biāo)端口號數(shù)據(jù)報長度校驗值UDP協(xié)議使用端口號為不同的應(yīng)用保留其各自的數(shù)據(jù)傳輸通道。是采用這一機制實現(xiàn)對同一時刻內(nèi)多項應(yīng)用同時發(fā)送和接收數(shù)據(jù)的支持。以是客戶端或服務(wù)器端)將UDP數(shù)據(jù)報通過源端口發(fā)送出去,而數(shù)據(jù)接
6、端口接收數(shù)據(jù)。有的網(wǎng)絡(luò)應(yīng)用只能使用預(yù)先為其預(yù)留或注冊的靜態(tài)端口;(6)UDP是面向報文的。發(fā)送方的UDP對應(yīng)用程序交下來的報文,在添加首部后就向下交付給IP層。既不拆分,也不合并,而是保留這些報文的邊界,因此,應(yīng)用程序需要選擇合適的報文大小。雖然UDP是一個不可靠的協(xié)議,但它是分發(fā)信息的一個理想?yún)f(xié)議。例如,在屏幕上報告股票市場、在屏幕上顯示航空信息等等。UDP也用在路由信息協(xié)議RIPDRoutingInformationProtocol)中修改路由表。在這些應(yīng)用場合下,如果有一個消息丟失,在幾秒之后另一個新的消息就會替換它。UDP廣泛用在多媒體應(yīng)用中,例如,ProgressiveNetwork
7、s公司開發(fā)的RealAudioDO,它是在因特網(wǎng)上把預(yù)先錄制的或者現(xiàn)場音樂實時傳送給客戶機的一種軟件,該軟件使用的RealAudioaudio-on-demandprotocol協(xié)議就是運行在UDP之Socket的方法來實現(xiàn)上的協(xié)議,大多數(shù)因特網(wǎng)電話軟件產(chǎn)品也都運行在UDPSocket的方法來實現(xiàn)我們先使用服務(wù)器代碼:服務(wù)器代碼:日代碼usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.Net;usingSystem.Net.Sockets;namespaceUDPclassProgramstatic
8、voidMain(stringargs)intrecv;bytedata=newbyte1024;/得到本機IP,DOTCP端口號IPEndPointip=newIPEndPoint(IPAddress.Any,8001);Socketnewsock=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);/綁定網(wǎng)絡(luò)地址newsock.Bind(ip);Console.WriteLine(ThisisaServer,hostnameis0,Dns.GetHostName();/等待客戶機連接Console.
9、WriteLine(Waitingforaclient);/得到客戶機IPIPEndPointsender=newIPEndPoint(IPAddress.Any,0);EndPointRemote=(EndPoint)(sender);recv=newsock.ReceiveFrom(data,refRemote);Console.WriteLine(Messagereceivedfrom0:,Remote.ToString();Console.WriteLine(Encoding.ASCII.GetString(data,0,recv);/客戶機連接成功后,發(fā)送信息stringwelcom
10、e=你好!;/字符串與字節(jié)數(shù)組相互轉(zhuǎn)換data=Encoding.ASCII.GetBytes(welcome);/發(fā)送信息newsock.SendTo(data,data.Length,SocketFlags.None,Remote);while(true)data=newbyte1024;/發(fā)送接受信息recv=newsock.ReceiveFrom(data,refRemote);Console.WriteLine(Encoding.ASCII.GetString(data,0,recv);newsock.SendTo(data,recv,SocketFlags.None,Remote)
11、;客戶端代碼:日代碼usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Net;usingSystem.Net.Sockets;namespaceUDPClientclassProgramstaticvoidMain(stringargs)bytedata=newbyte1024;stringinput,stringData;/構(gòu)建TCP服務(wù)器Console.WriteLine(ThisisaClient,hostnameis0,Dns.GetHostName();/
12、設(shè)置服務(wù)IP,設(shè)置TCP端口號IPEndPointip=newIPEndPoint(IPAddress.Parse(),8001);/定義網(wǎng)絡(luò)類型,數(shù)據(jù)連接類型和網(wǎng)絡(luò)協(xié)議UDPSocketserver=newSocket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);stringwelcome=你好!;data=Encoding.ASCII.GetBytes(welcome);server.SendTo(data,data.Length,SocketFlags.None,ip);IPEndPointsender=ne
13、wIPEndPoint(IPAddress.Any,0);EndPointRemote=(EndPoint)sender;data=newbyte1024;/對于不存在的IP地址,加入此行代碼后,可以在指定時間內(nèi)解除阻塞模式限制intrecv=server.ReceiveFrom(data,refRemote);Console.WriteLine(Messagereceivedfrom0:,Remote.ToString();Console.WriteLine(Encoding.ASCII.GetString(data,0,recv);while(true)input=Console.Read
14、Line();if(input=exit)break;server.SendTo(Encoding.ASCII.GetBytes(input),Remote);data=newbyte1024;recv=server.ReceiveFrom(data,refRemote);stringData=Encoding.ASCII.GetString(data,0,recv);Console.WriteLine(stringData);Console.WriteLine(StoppingClient.);server.Close();下面咱們再來使用UdpClient來實現(xiàn)他們之間的通信服務(wù)器端代碼日
15、代碼usingSystem;usingusingusingSystem.Net;System.Net.Sockets;System.Text;publicclassCustomprivatestaticreadonlyIPAddressGroupAddress=IPAddress.Parse(IP地址);privateconstintGroupPort=11000;privatestaticvoidStartListener()booldone=false;1n,UdpClientlistener=newUdpClient();IPEndPointgroupEP=newIPEndPoint(G
16、roupAddress,GroupPort);trylistener.JoinMulticastGroup(GroupAddress);listener.Connect(groupEP);while(!done)Console.WriteLine(Waitingforbroadcast);bytebytes=listener.Receive(refgroupEP);Console.WriteLine(Receivedbroadcastfrom0:ngroupEP.ToString(),Encoding.ASCII.GetString(bytes,0,bytes.Length);listener
17、.Close();catch(Exceptione)Console.WriteLine(e.ToString();publicstaticintMain(Stringargs)StartListener();return0;客戶端代碼:日代碼usingSystem;usingSystem.Net;usingSystem.Net.Sockets;usingSystem.Text;publicclassClientprivatestaticIPAddressGroupAddress=IPAddress.Parse(IP地址);privatestaticintGroupPort=11000;privatestaticvoidSend(Stringmessage)UdpClientsender=newUdpClient();IPEndPointgroupEP=newIPEndPoint(GroupAddress,GroupPort);tryConsole.WriteLine(Sendingdatagram:0,message);bytebytes=Encoding.ASCII.GetBytes(message);sender
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)人才培養(yǎng)三方合作協(xié)議合同
- 中蒙攜手共創(chuàng)未來:簽訂蒙醫(yī)藥國際交流合作合同
- 上海市農(nóng)產(chǎn)品采購合同
- 業(yè)務(wù)合同員工聘用協(xié)議模板
- 2025年鐵礦石購銷合同協(xié)議標(biāo)準(zhǔn)文本
- 2025年農(nóng)戶與信用合作社融資協(xié)議規(guī)范文本
- 2025年貨品物流費用結(jié)算管理指導(dǎo)協(xié)議
- 2025年船舶物料管理協(xié)議
- 個人合作建房合同協(xié)議書范本
- 交通事故損害賠償合同協(xié)議書模板
- 關(guān)于合同知識的全面解讀
- Unit 6 Beautiful landscapes Integration 說課稿 -2024-2025學(xué)年譯林版英語七年級下冊001
- 2024年常德職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫
- 2025 年福建省中考語文試題:作文試題及范文
- 短視頻運營績效考核表KPI-企業(yè)管理
- 【譯林】九下英語單詞默寫表
- IEC 62368-1標(biāo)準(zhǔn)解讀-中文
- HG+20231-2014化學(xué)工業(yè)建設(shè)項目試車規(guī)范
- 《自動化專業(yè)導(dǎo)論》課程教學(xué)大綱
- 消防設(shè)施維護與日常檢查培訓(xùn)講義
- 良性陣發(fā)性位置性眩暈完整版本課件
評論
0/150
提交評論