(網路程式設計)UDP程式
阿新 • • 發佈:2021-02-07
技術標籤:Java語言高階特性java
資料的傳送與接收(UDP程式)
TCP最大的特點是可靠的網路連線,在網路程式開發之中還存在有一種UDP的程式,基於資料報的網路程式設計實現,如果要想實現UDP程式需要兩個類:
- DatagramPacket(包含的資料內容)
- DatagramSocket(網路的傳送與接收)
資料報就好比傳送的短訊息一樣,客戶端是否接受到與傳送者無關。
範例:實現UDP程式
服務端
package UDPModel.server; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; public class UDPServer { public static void main(String[] args) throws Exception{ DatagramSocket server = new DatagramSocket(1111); //連線到1111埠 String str = "Hello Word!"; //要傳送的內容 //要傳送的訊息物件 /** * 分組資料 str.getBytes() 轉為位元組陣列 * 分組資料偏移量 0 資料起始位置 * 分組資料長度 str.length() 字串長度 * 目的地址 InetAddress.getByName("localhost") 根據主機名稱確定主機的IP地址。 * 目標埠號 1010 埠 */ DatagramPacket packet = new DatagramPacket(str.getBytes(),0,str.length(), InetAddress.getByName("localhost"),1010); //傳送給1010埠 server.send(packet);//傳送資料 System.out.println("訊息傳送完畢"); server.close(); } }
客戶端
package UDPModel.client; import java.net.DatagramPacket; import java.net.DatagramSocket; public class UDPClient { public static void main(String[] args) throws Exception{ DatagramSocket client = new DatagramSocket(1010); //連線到1010埠 byte[] data = new byte[1024]; //接收訊息 DatagramPacket packet = new DatagramPacket(data,data.length); //接收資料的物件 System.out.println("客戶端等待接收的訊息......"); client.receive(packet); //接收訊息,所有訊息都在data位元組陣列之中 System.out.println("接收到的訊息內容為"+new String(data,0,packet.getLength())); client.close(); } }
先開啟客戶端等待接收,通過服務端傳送給客戶端,客戶端接收。
- 客戶端:客戶端等待接收的訊息......
- 服務端:訊息傳送完畢
- 客戶端:客戶端等待接收的訊息......
接收到的訊息內容為Hello Word!
UDP傳送的資料一定是不可靠的,但是TCP由於需要保證可靠的連線,所以需要伺服器的資源就越多。