當(dāng)前位置:首頁 > 物聯(lián)網(wǎng) > 網(wǎng)絡(luò)協(xié)議
[導(dǎo)讀]   QUdpSocket   QUdpSocket是QAbstractSocket 的子類,它們都繼承了QIODevice。所以可以用QUdpSocket進(jìn)行發(fā)送接收數(shù)據(jù)。它和QTcpS

  QUdpSocket

  QUdpSocket是QAbstractSocket 的子類,它們都繼承了QIODevice。所以可以用QUdpSocket進(jìn)行發(fā)送接收數(shù)據(jù)。它和QTcpSocket最大的區(qū)別也就是,發(fā)送數(shù)據(jù)之前不需要建立連接。

  1、UDP是一種基于無連接的、不可靠的數(shù)據(jù)報(bào)傳輸協(xié)議。

  2、套接字可以當(dāng)作一種輸入輸出設(shè)備,QUdpSocket可以調(diào)用writeDatagram()和readDatagram()對(duì)套接字進(jìn)行讀寫。每當(dāng)一次數(shù)據(jù)報(bào)寫入完成后會(huì)釋放bytesWritten()信號(hào)。

  3、QUdpSocket在讀之前要先調(diào)用bind()函數(shù)進(jìn)行綁定,如果僅僅只是寫的話則無需綁定。

  4、當(dāng)有數(shù)據(jù)報(bào)可讀時(shí),QUdpSocket會(huì)發(fā)出readRead()信號(hào),可以通過定義關(guān)聯(lián)該信號(hào)的槽函數(shù),對(duì)數(shù)據(jù)進(jìn)行讀取。此時(shí)hasPendingDatagrams()也會(huì)返回true,pendingDatagramSize()可以用于獲取數(shù)據(jù)報(bào)長度,然后調(diào)用讀函數(shù)進(jìn)行數(shù)據(jù)的讀取。

  UDP協(xié)議詳解

  UDP報(bào)頭由4個(gè)域組成,其中每個(gè)域各占用2個(gè)字節(jié),具體如下: 端口號(hào) ,目標(biāo)端口號(hào) ,數(shù)據(jù)報(bào)長度 ,校驗(yàn)值

  UDP協(xié)議使用端口號(hào)為不同的應(yīng)用保留其各自的數(shù)據(jù)傳輸通道。UDP和TCP協(xié)議正是采用這一機(jī)制實(shí)現(xiàn)對(duì)同一時(shí)刻內(nèi)多項(xiàng)應(yīng)用同時(shí)發(fā)送和接收數(shù)據(jù)的支持。數(shù)據(jù)發(fā)送一方(可以是客戶端或服務(wù)器端)將UDP數(shù)據(jù)報(bào)通過源端口發(fā)送出去,而數(shù)據(jù)接收一方則通過目標(biāo)端口接收數(shù)據(jù)。有的網(wǎng)絡(luò)應(yīng)用只能使用預(yù)先為其預(yù)留或注冊(cè)的靜態(tài)端口;而另外一些網(wǎng)絡(luò)應(yīng)用則可以使用未被注冊(cè)的動(dòng)態(tài)端口。因?yàn)閁DP報(bào)頭使用兩個(gè)字節(jié)存放端口號(hào),所以端口號(hào)的有效范圍是從0到65535。一般來說,大于49151的端口號(hào)都代表動(dòng)態(tài)端口。

  數(shù)據(jù)報(bào)的長度是指包括報(bào)頭和數(shù)據(jù)部分在內(nèi)的總的字節(jié)數(shù)。因?yàn)閳?bào)頭的長度是固定的,所以該域主要被用來計(jì)算可變長度的數(shù)據(jù)部分(又稱為數(shù)據(jù)負(fù)載)。數(shù)據(jù)報(bào)的最大長度根據(jù)操作環(huán)境的不同而各異。從理論上說,包含報(bào)頭在內(nèi)的數(shù)據(jù)報(bào)的最大長度為65535字節(jié)。不過,一些實(shí)際應(yīng)用往往會(huì)限制數(shù)據(jù)報(bào)的大小,有時(shí)會(huì)降低到8192字節(jié)。

  UDP協(xié)議使用報(bào)頭中的校驗(yàn)值來保證數(shù)據(jù)的安全。校驗(yàn)值首先在數(shù)據(jù)發(fā)送方通過特殊的算法計(jì)算得出,在傳遞到接收方之后,還需要再重新計(jì)算。如果某個(gè)數(shù)據(jù)報(bào)在傳輸過程中被第三方篡改或者由于線路噪音等原因受到損壞,發(fā)送和接收方的校驗(yàn)計(jì)算值將不會(huì)相符,由此UDP協(xié)議可以檢測是否出錯(cuò)。這與TCP協(xié)議是不同的,后者要求必須具有校驗(yàn)值。

  UDPvs.TCP

  UDP和TCP協(xié)議的主要區(qū)別是兩者在如何實(shí)現(xiàn)信息的可靠傳遞方面不同。TCP協(xié)議中包含了專門的傳遞保證機(jī)制,當(dāng)數(shù)據(jù)接收方收到發(fā)送方傳來的信息時(shí),會(huì)自動(dòng)向發(fā)送方發(fā)出確認(rèn)消息;發(fā)送方只有在接收到該確認(rèn)消息之后才繼續(xù)傳送其它信息,否則將一直等待直到收到確認(rèn)信息為止。

  與TCP不同,UDP協(xié)議并不提供數(shù)據(jù)傳送的保證機(jī)制。如果在從發(fā)送方到接收方的傳遞過程中出現(xiàn)數(shù)據(jù)報(bào)的丟失,協(xié)議本身并不能做出任何檢測或提示。因此,通常人們把UDP協(xié)議稱為不可靠的傳輸協(xié)議。

  相對(duì)于TCP協(xié)議,UDP協(xié)議的另外一個(gè)不同之處在于如何接收突法性的多個(gè)數(shù)據(jù)報(bào)。不同于TCP,UDP并不能確保數(shù)據(jù)的發(fā)送和接收順序。例如,一個(gè)位于客戶端的應(yīng)用程序向服務(wù)器發(fā)出了以下4個(gè)數(shù)據(jù)報(bào)

  D1

  D22

  D333

  D4444

  但是UDP有可能按照以下順序?qū)⑺邮盏臄?shù)據(jù)提交到服務(wù)端的應(yīng)用:

  D333

  D1

  D4444

  D22

  事實(shí)上,UDP協(xié)議的這種亂序性基本上很少出現(xiàn),通常只會(huì)在網(wǎng)絡(luò)非常擁擠的情況下才有可能發(fā)生。

  UDP協(xié)議的幾個(gè)特性

  1) UDP是一個(gè)無連接協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接,當(dāng)它想傳送時(shí)就簡單地去抓取來自應(yīng)用程序的數(shù)據(jù),并盡可能快地把它扔到網(wǎng)絡(luò)上。在發(fā)送端,UDP傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度、計(jì)算機(jī)的能力和傳輸帶寬的限制;在接收端,UDP把每個(gè)消息段放在隊(duì)列中,應(yīng)用程序每次從隊(duì)列中讀一個(gè)消息段。

  

 ?。?) 由于傳輸數(shù)據(jù)不建立連接,因此也就不需要維護(hù)連接狀態(tài),包括收發(fā)狀態(tài)等,因此一臺(tái)服務(wù)機(jī)可同時(shí)向多個(gè)客戶機(jī)傳輸相同的消息。

 ?。?) UDP信息包的標(biāo)題很短,只有8個(gè)字節(jié),相對(duì)于TCP的20個(gè)字節(jié)信息包的額外開銷很小。

 ?。?) 吞吐量不受擁擠控制算法的調(diào)節(jié),只受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶寬、源端和終端主機(jī)性能的限制。

 ?。?)UDP使用盡最大努力交付,即不保證可靠交付,因此主機(jī)不需要維持復(fù)雜的鏈接狀態(tài)表(這里面有許多參數(shù))。

 ?。?)UDP是面向報(bào)文的。發(fā)送方的UDP對(duì)應(yīng)用程序交下來的報(bào)文,在添加首部后就向下交付給IP層。既不拆分,也不合并,而是保留這些報(bào)文的邊界,因此,應(yīng)用程序需要選擇合適的報(bào)文大小。

  雖然UDP是一個(gè)不可靠的協(xié)議,但它是分發(fā)信息的一個(gè)理想?yún)f(xié)議。例如,在屏幕上報(bào)告股票市場、在屏幕上顯示航空信息等等。UDP也用在路由信息協(xié)議RIP(RouTIng InformaTIon Protocol)中修改路由表。在這些應(yīng)用場合下,如果有一個(gè)消息丟失,在幾秒之后另一個(gè)新的消息就會(huì)替換它。UDP廣泛用在多媒體應(yīng)用中,例如,Progressive Networks公司開發(fā)的RealAudio軟件,它是在因特網(wǎng)上把預(yù)先錄制的或者現(xiàn)場音樂實(shí)時(shí)傳送給客戶機(jī)的一種軟件,該軟件使用的RealAudio audio-on-demand protocol協(xié)議就是運(yùn)行在UDP之上的協(xié)議,大多數(shù)因特網(wǎng)電話軟件產(chǎn)品也都運(yùn)行在UDP之上。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉