更多資料請看:https://www.yuque.com/shizhiy...java
UDP協議(用戶數據報協議)是無鏈接的、不可靠的、無序的,速度快
進行數據傳輸時,首先將要傳輸的數據定義成數據報(Datagram),大小限制在64k,在數據報中指明數據索要達到的Socket(主機地址和端口號),而後再將數據報發送出去;
**
DatagramPacket類:表示數據報包
DatagramSocket類:進行端到端通訊的類編程
//服務器端,實現基於UDP的用戶登陸 //一、建立服務器端DatagramSocket,指定端口 DatagramSocket socket =new datagramSocket(10010); //二、建立數據報,用於接受客戶端發送的數據 byte[] data =newbyte[1024];// DatagramPacket packet =newDatagramPacket(data,data.length); //三、接受客戶端發送的數據 socket.receive(packet);//此方法在接受數據報以前會一致阻塞 //四、讀取數據 String info =newString(data,o,data.length); System.out.println("我是服務器,客戶端告訴我"+info); //========================================================= //向客戶端響應數據 //一、定義客戶端的地址、端口號、數據 InetAddress address = packet.getAddress(); int port = packet.getPort(); byte[] data2 = "歡迎您!".geyBytes(); //二、建立數據報,包含響應的數據信息 DatagramPacket packet2 = new DatagramPacket(data2,data2.length,address,port); //三、響應客戶端 socket.send(packet2); //四、關閉資源 socket.close();
//客戶端 //一、定義服務器的地址、端口號、數據 InetAddress address =InetAddress.getByName("localhost"); int port =10010; byte[] data ="用戶名:admin;密碼:123".getBytes(); //二、建立數據報,包含發送的數據信息 DatagramPacket packet = newDatagramPacket(data,data,length,address,port); //三、建立DatagramSocket對象 DatagramSocket socket =newDatagramSocket(); //四、向服務器發送數據 socket.send(packet); //接受服務器端響應數據 //====================================== //一、建立數據報,用於接受服務器端響應數據 byte[] data2 = new byte[1024]; DatagramPacket packet2 = new DatagramPacket(data2,data2.length); //二、接受服務器響應的數據 socket.receive(packet2); String raply = new String(data2,0,packet2.getLenth()); System.out.println("我是客戶端,服務器說:"+reply); //四、關閉資源 socket.close();