網路程式設計學習筆記(三)UDP

2022-03-05 02:33:40 字數 1901 閱讀 7847

1、不可靠的、效率高、資料報(資料打成乙個小包乙個小包地往外發)、非連線。

2、udp是非連線的,因此嚴格來說並不區分伺服器端和客戶端。

3、udp通訊過程:udp都是通過位元組陣列進行對話的。

"伺服器"端:接資料

(1)新建位元組陣列,用來接收對方發過來的資料

byte buf = new byte[1024];

(2)建立資料報socket

datagramsocket ds = new datagramsocket(5678);//埠號5678是udp的5678,tcp還有乙個埠5678

(3)新建包裹datagrampacket ,包裹把byte位元組陣列都佔滿了,第二個引數表示包裹在陣列中佔的長度。當呼叫receive()方法接收資料時,將接收到的內容存放到位元組陣列buf中。

datagrampacket  dp = new datagrampacket (buf, buf.length);

(4)接收對方發來的資料,有人發資料,就把資料放在包袱裡,receive也是阻塞式的方法,如果沒有人發資料,就一直等著。

ds.receive(dp);

system.out.println(new string(buf,0,dp.getlength()));//把包袱裡有的內容轉換成字串輸出string(buf,0,dp.getlength())表示通過陣列的一部分構建字串。dp.getlength() 表示位元組陣列裡到底占用了多少空間。

ds.close();

「客戶」端:發資料

(1) 將要傳送的內容轉換成位元組陣列

byte buf = (new string("hello")).getbytes();

(2)建立包裹,並把位元組陣列放進去,inetsocketaddress是socketaddress的子類表示ip位址。

datagrampacket dp = new datagrampacket(buf, buf.length, new inetsocketaddress("127.0.0.1", 5678));

(3)建立資料報socket

datagramsocket ds = new datagramsocket(9999);//9999是客戶端的埠

(4)傳送資訊

ds.sent(dp);

ds.close();

以上例子中傳的是string字串型別的訊息;如果要傳long型別的訊息,需要通過bytearrayoutputstream來傳訊息;伺服器端接收時用bytearrayinputstream。

客戶端:long n = 1000l;

bytearrayoutputstream baos = new bytearrayoutputstream();

dataoutputstream dos = new dataoutputstream(baos );//為了寫入long型的資料,採用dataoutputstream處理流

dos.writelong(n);//向位元組陣列輸出流中寫資料

byte  buf = baos.tobytearray();//將流中的內容轉換成位元組陣列,進而建立datagrampacket,並用udp的 datagramsocket發出訊息。

接下來與上面的例子一致。

伺服器端:

ds.receive(dp);

bytearrayinputstream bais = new bytearrayinputstream(buf);

datainputstream dis = new datainputstream(bais);

system.out.println(dis.readlong());

注意:在udp中用的最多的流就是bytearrayoutputstream、dataoutputstream和bytearrayinputstream、datainputstream

Qt學習筆記 網路程式設計 UDP

qt中qudpsocket類進行收發udp資料報,該類父類是qabstractsocket。簡單地說,套接字socket ip位址 port埠號 ip指定網路中的哪乙個主機 port埠號指定主機的哪乙個應用程式 要使用udp,工程檔案中必須新增qt network 是否有資料可讀 bool qudp...

UNIX網路程式設計學習 五 UDP程式設計

udp相比tcp是無連線的。它收發資料是通過recvfrom和sendto兩個函式。它們的原型如下 ssize t recvfrom int sockfd,void buff,size t nbytes,int flags,struct sockaddr from,socklen t addrlen...

UDP網路程式設計

基於udp 伺服器 程式步驟 1.建立乙個socket,用socket 函式 2.繫結ip位址 埠等資訊到socket上,用函式bind 3.迴圈接收資料,用recvfrom 4.關閉網路連線。基於udp 客戶端 程式步驟 1.建立乙個socket,用socket 函式 2.繫結ip位址 埠等資訊到...