問個udp分包的小問題

2021-08-28 15:39:12 字數 630 閱讀 1394

udp socket sendto()發出的小片資料,有可能被udp合成為乙個包麼?比如間隔很短的兩次呼叫sendto(),第一次發5個位元組,第二次發8個,會不會合成為乙個13位元組payload的udp包?

不會。1. udp基於資料報,而tcp基於流.例如,如果tcp對端傳送了三個256位元組的資料緩衝區,與之相連的對端應用會依照他們的傳送順序收到768位元組資料,但這些資料可能會分布在數目不定的不同塊中,塊與塊的分界不會有任何保證.與之相反,如果udp對端傳送了三個256位元組資料報,對端的接收方會收到其中的任意0.1.2.3個資料報.但是,所收到任何乙個資料報都是所傳送的完整的256位元組資料報,乙個也不會斷開或合併在一起.因此, udp傳送是面向記錄的,而使用tcp,你需要通過某種方式正確的提取資料流.

2. udp不保證資料的到達或到達順序.而tcp則保證所收到的任何資料都是正好所傳送的資料,並且保持他們按照順序到達,udp只盡力進行遞送.如前面所示,三個256位元組的資料報可能不會全部到達.所收到的任何資料報都將是所傳送的完整的\正確的資料報;但是,資料報可能會在傳遞過程中丟失或改變順序.因此,儘管udp減輕了你的負擔,是你不必整編和解編位元組流的資料,你需要對你的協議和/或應用所要求的可靠性負責。

3. tcp是兩個對端之間的一對一連線,而udp提供了多種操作模式:單播、廣播、多播。

問個file的問題

問題描述 一般例項化乙個file是這樣的file filenam new file path path為要建立檔案的路徑,我想問的是,這個path能不能指定工程中drawable xhdpi目錄下的檔案呢?解決方案1 額。這種問題,動手試一下立刻就知道了,為什麼非要問呢。解決方案2 你想獲取資源資料...

C 基於Udp的分包傳輸

因為要遠做程攝像頭監控,要用到網路資料傳輸,了一下,很多就是基於tcp的,因為qq是用udp,所有我也嘗試用udp。要用udp傳輸資料,就免不了分包和重包,因為udp最大只能傳輸64kb的資料!下面給出分包的 首先定義乙個包類 using system using system.collection...

winsock緩衝的拆分包問題

邏輯上的一次傳送未必就以乙個單獨的包傳送出去,邏輯上的多次呼叫未必就是多個包被傳送出去,這其中的秘密就是winsock緩衝區。呼叫flush可以強制發空當前緩衝資料,但是接收者還是未必一次收夠或單次不多收。使用networkstream可以在我們的程式中再設立一層緩衝,但真正的意義是在這層緩衝上,我...