## 服務器端實現步驟
1. 創建DatagramSocket,指定端口號
2. 創建DatagramPacket,用于接收客戶端的數據
3. 接收客戶端發送的數據信息
4. 讀取數據
~~~java
public class UDPServer {
/**
* 服務器端,實現基于UDP的用戶登陸
*
* @throws IOException
*/
public static void main(String[] args) throws IOException {
/* 服務端接收客戶端的數據 */
// 1. 創建DatagramSocket,指定端口號
DatagramSocket socket = new DatagramSocket(8800);
// 2. 創建DatagramPacket,用于接收客戶端的數據
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();
}
}
~~~
## 客戶端實現步驟
1. 定義發送信息,服務器地址,端口號,數據
2. 創建DatagramPacket,包含將要發送的信息
3. 創建DatagramSocket對象
4. 發送數據
~~~java
public class UDPClient {
/**
* 客戶端
*
* @throws IOException
*/
public static void main(String[] args) throws IOException {
/* 向服務器端發送信息 */
// 1. 定義發送信息,服務器地址,端口號,數據
InetAddress address = InetAddress.getByName("localhost");
int port = 8800;
byte[] data = "用戶名:admin;密碼:123".getBytes();
// 2. 創建DatagramPacket,包含將要發送的信息
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();
}
}
~~~