服務器端:
1、創建DatagramSocket,指定端口號
2、創建DatagramPacket
3、接收客戶端發送的數據信息
4、讀取數據
客戶端:
1、定義發送信息
2、創建DatagramPacket,包含將要發送的信息
3、創建DatagramSocket
4、發送數據
Server.java
public class UDPServer {
public static void main(String[] args) throws IOException{
/**
* 接收客戶端發送的數據
*/
//1、創建服務器端DatagramSocket,指定端口
DatagramSocket socket = new DatagramSocket(8888);
//2、創建數據報,用於接收客戶端發送的數據
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data,data.length);
//3、接收客戶端發送的數據
System.out.println("*****************服務器端已經啟動,等待客戶端發送數據******************");
socket.receive(packet);//處於阻塞狀態
//4、讀取數據
String info = new String(data,0,packet.getLength());
System.out.println("我是服務器,客戶端說:"+info);
/**
* 向客戶端響應數據
*/
//1、定義客戶端的地址,端口號以及數據
InetAddress address = packet.getAddress();
int port = packet.getPort();
byte[] data2 = "歡迎該客戶端登錄".getBytes();
//2、創建數據報對象
DatagramPacket packet2 = new DatagramPacket(data2,data2.length,address,port);
//3、向客戶端發送數據
socket.send(packet2);
//4、關閉資源
socket.close();
}
}
Client.java
public class UDPClient {
public static void main(String[] args) throws IOException{
/**
* 向服務器端發送數據
*/
//1、定義服務器的地址,端口號以及數據
InetAddress address = InetAddress.getByName("localhost");
int port = 8888;
byte[] data = "用戶名:adm;密碼:123".getBytes();
//2、創建數據報
DatagramPacket packet = new DatagramPacket(data,data.length,address,port);
//3、創建DatagramSocket對象
DatagramSocket socket = new DatagramSocket();
//4、向服務器端發送數據報
socket.send(packet);
/**
* 接收服務器端的響應數據
*/
//1、創建數據報,用於接收服務器端響應的數據
byte[] data2 = new byte[1024];
DatagramPacket packet2 = new DatagramPacket(data2,data2.length);
//2、接收數據
socket.receive(packet2);
//3、讀取數據
String reply = new String(data2,0,packet2.getLength());
System.out.println("我是客戶端,服務器說:"+reply);
//4、關閉資源
socket.close();
}
}