通訊協議
通訊協議是udp/tcp通訊的基礎,沒有通訊協議的「通訊」是沒有任何意義上的,通訊協議不是底層函式或者高深的原理,而是程式設計師之間的一種文字約定。
資料在網路上是以位元組的形式傳送的(底層是01碼),我們在讀取到資料之後,該以怎樣的方式對它進行解碼呢?這就是我們在通訊之前需要制定的通訊協議。如果程式設計師不知道這個協議,那麼他拿到的就是一堆無意義的資料。
以udp為例:
傳送端我們約定,我們所傳送資料的第乙個位元組代表了資料的種類
1:代表iamge
2:代表message
3:代表file
接下來,所有的位元組都是真正需要傳遞的資料。
在前面的基礎上,所有的位元組都要進行減1操作(簡單加密,接收端讀取資料的時候相應要進行加1操作)。
接收端這個資料傳送到伺服器之後,伺服器首先讀取這個資料報,然後對每乙個位元組進行加1操作
然後對第乙個位元組進行判斷,如果第乙個位元組是1,那麼伺服器就知道這個資料代表了乙個,
如果第乙個位元組是2,這段資料就是一段文字訊息,如果第乙個位元組是3,這段資料就代表了乙個檔案。
這就是乙個簡單的使用通訊協議並且對資料進行加密的例子,這個協議,是雙方提前約定好的。
在我們制定好自己的通訊協議之後,我們就可以著手了解udp通訊的實現了。
udp通訊
對於在同一網段通訊的程式來說,udp是很好的選擇。
//@param
public int local_null_port=15000;
public int local_receive_port=14000;
public int receiver_port=13000;
public string send_socket="***.***.**.***";//傳送端ipv4位址
public string local_socket="***.***.**.**";//接收端ipv4位址
我們首先構建接收端的**
socketaddress localaddr = new inetsocketaddress(local_socket, local_receive_port);//本地位址
datagramsocket recvsocket = null;//接收的伺服器udp埠
try catch (socketexception e)
datagrampacket packet = new datagrampacket(buffer, buffer.length);//建立接收資料報物件
try catch (ioexception e)
byte bytes =packet.getdata();//獲取資料
對獲取的byte陣列做一些處理
public void handle(byte bs)
}public void dosomething_a()
public void dosomething_b()
public void dosomething_c()
構建傳送端
socketaddress localaddr = new inetsocketaddress(local_socket,local_null_port);
datagramsocket dsender = null;//2.建立傳送的socket物件
try catch (socketexception e)
byte buffer = new byte[40000];
buffer = getbyte(buffer);
datagrampacket dp = new datagrampacket(buffer, buffer.length, destadd); //打包
try catch (ioexception e)
對傳送資料的處理
public byte getbyte(byte bs)
UDP通訊協議
在做手機和服務端通訊時,udp是其中可用協議之一。不過udp的缺點在於不能得知傳送是否成功,可能會存在掉包的情況但是傳送方卻並不知道。不過既然udp能存在,自然有它使用的業務場景。udp其實很簡單,最主要的兩個類datagramsocket和datagrampacket udp接收 while tr...
網路通訊協議 UDP
udp 是user dategram protocol 簡稱 使用者資料報協議 是osi參考模型當中的一種無連線的傳輸層協議,ietf rfc 768是udp的正式規範 udp 和 tcp協議一樣也是用於處理資料報,是一種無連線的傳輸層協議 補充 連線服務 例子 你要寄乙份信件,你要讓你認識的人去送...
tcp和udp通訊協議
tcp udp tcp與udp基本區別 1.基於連線與無連線 2.tcp要求系統資源較多,udp較少 3.udp程式結構較簡單 4.流模式 tcp 與資料報模式 udp 5.tcp保證資料正確性,udp可能丟包 6.tcp保證資料順序,udp不保證 udp應用場景 1.面向資料報方式 2.網路資料大...