服務器端
package demo5; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 服務器端,實現基於UDP的用戶登錄 *@ClassName UDPServer *@Author DiYun *@Version 1.0 **/ public class UDPServer { public static void main(String[] args) throws IOException { //1.創建服務器端DatagramSocket 指定端口 DatagramSocket socket = new DatagramSocket(8800); //2.創建數據包,用於接收客戶端發送的數據 byte[] data = new byte[1024]; //創建字節數組,指定接收的數據包的大小 DatagramPacket packet = new DatagramPacket(data, data.length); System.out.println("服務端已啟動等待客戶端發送數據**********************"); //3.接收客戶端發送的數據 socket.receive(packet); //此方法在接收到數據包之前會一直阻塞 //4.讀取數據 String info = new String(data, 0, packet.getLength()); System.out.println("我是服務器,客戶端說:" + info); /** * 向客戶端響應數據 */ 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); //關閉資源 socket.close(); } }
客戶端
package demo5;/** * @author ydy * Create By ydy on 2019/1/24 */ import java.io.IOException; import java.net.*; /** * 基於UDP 客戶端 *@ClassName UDPClient *@Description TODO *@Author DiYun *@Date 2019/1/24 20:01 *@Version 1.0 **/ public class UDPClient { public static void main(String[] args) throws IOException { //1.定義服務器的地址,端口號,數據 InetAddress address = InetAddress.getByName("localhost"); int potr = 8800; byte[] data = "用戶名:admin; 密碼: 123".getBytes(); //2.創建數據包,包含發送的數據信息 DatagramPacket packet = new DatagramPacket(data, data.length, address, potr); //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(); } }
注意:必須首先啟動服務器,再啟動客戶端