UDP完成資料的傳送和接收的程式碼
要實現UDP通訊需要建立一個傳送端程式和一個接收端程式,很明顯,在通訊時只有接收端程式先執行,才能避免因傳送端傳送的資料無法接收,而造成資料丟失。因此,首先需要來完成接收端程式的編寫。
UDP完成資料的傳送
/*
* 傳送端
* 1,建立DatagramSocket物件
* 2,建立DatagramPacket物件,並封裝資料
* 3,傳送資料
* 4,釋放流資源
*/
public class UDPSend {
public static void main(String[] args) throws IOException {
//1,建立DatagramSocket物件
DatagramSocket sendSocket = new DatagramSocket();
//2,建立DatagramPacket物件,並封裝資料
//public DatagramPacket(byte[] buf, int length, InetAddress address, int port)
//構造資料報包,用來將長度為 length 的包傳送到指定主機上的指定埠號。
byte[] buffer = "hello,UDP".getBytes();
DatagramPacket dp =
//3,傳送資料
//public void send(DatagramPacket p) 從此套接字傳送資料報包
sendSocket.send(dp);
//4,釋放流資源
sendSocket.close();
}
}
UDP完成資料的接收
/*
* UDP接收端
*
* 1,建立DatagramSocket物件
* 2,建立DatagramPacket物件
* 3,接收資料儲存到DatagramPacket物件中
* 4,獲取DatagramPacket物件的內容
* 5,釋放流資源
*/
public class UDPReceive {
public static void main(String[] args) throws IOException {
//1,建立DatagramSocket物件,並指定埠號
DatagramSocket receiveSocket = new DatagramSocket(12306);
//2,建立DatagramPacket物件, 建立一個空的倉庫
byte[] buffer = new byte[1024];
DatagramPacket dp = new DatagramPacket(buffer, 1024);
//3,接收資料儲存到DatagramPacket物件中
receiveSocket.receive(dp);
//4,獲取DatagramPacket物件的內容
//誰發來的資料 getAddress()
InetAddress ipAddress = dp.getAddress();
String ip = ipAddress.getHostAddress();//獲取到了IP地址
//發來了什麼資料 getData()
byte[] data = dp.getData();
//發來了多少資料 getLenth()
int length = dp.getLength();
//顯示收到的資料
String dataStr = new String(data,0,length);
System.out.println("IP地址:"+ip+ "資料是"+ dataStr);
//5,釋放流資源
receiveSocket.close();
}
}