C 基於Udp的分包傳輸

2021-12-29 23:44:17 字數 1301 閱讀 1912

因為要遠做程攝像頭監控,要用到網路資料傳輸,百度了一下,很多就是基於tcp的,因為qq是用udp,所有我也嘗試用udp。

要用udp傳輸資料,就免不了分包和重包,因為udp最大只能傳輸64kb的資料!下面給出分包的**:

首先定義乙個包類:

using system;

using system.collections.generic;

namespace packet_library

///

/// 索引序號

///

public int index

set

}///

/// 資料

///

public byte data

set

}///

/// 狀態,用來記錄包的開始和結束。1:開始,2:中間,3:包尾。

///

public int state

set }}

再定義乙個處理包的類:

using system;

using system.collections.generic;

namespace packet_library

int _length = datagram.length;

int counts = _length / defaultpartsize;

int remainder = _length % defaultpartsize;

int tatal = counts;

if (remainder > 0)

counts++;

for (int i = 0; i < counts; i++)

return packets;}}

}因為udp是無連線的,所以我也模擬握手方式來進行資料傳輸,不要跟我說什麼是握手,如果真的不知道的話,那我就再囉嗦幾句。所謂握手是乙個連線方式,就像我們打**,首先你拔號,再等待,如果對方接了,你們才可以通話。tcp就是這樣的!

在udp[中,我們可以先定義幾個指令:

public enum commands

byte buffer = new byte[imagebuffer.length + data.length];

buffer.blockcopy(imagebuffer, 0, buffer, 0, imagebuffer.length);

buffer.blockcopy(data, 0, buffer, imagebuffer.length, data.length);

imagebuffer = buffer;

}

Android Socket基於UDP傳輸

接收方建立步驟 1.建立乙個datagramsocket物件,並指定監聽的埠號 datagramsocket socket new datagramsocket 4567 2.建立乙個byte陣列用於接收 byte data new byte 1024 3.建立乙個空的datagrampackage...

基於UDP的檔案傳輸軟體 C

完成乙個區域網內的基於udp的檔案傳輸系統,該軟體有客戶端與服務端,服務端繫結ip 埠,監聽接收檔案的訊息,客戶端連線服務端,向其傳送選中檔案,傳送檔案過程中允許兩端終端檔案傳輸。同時需要支援多個客戶端的檔案傳送。附兩張老師需求文件中介面的截圖 在專案要求和中把很多點都列舉出來了,這裡列個表 基於u...

基於UDP傳輸演算法筆記(初稿)

傳輸速度快,tcp 3次握手後建立連線 終止需要4次握手 沒公網ip 做nat穿透 需要更高的頻寬搶占能力 解決高延遲高丟包下 頻寬利用率低問題 連線頻繁變動。如手機經常更換基站 高實時 延遲 1s 準實時1 3s 偽實時 3s 資料量大,不需要高實時,可以推遲重傳時間 通訊雙方無法直接連線 ip ...