因為要遠做程攝像頭監控,要用到網路資料傳輸,百度了一下,很多就是基於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 ...