轉發大佬的筆記
https://www.cnblogs.com/zhaoyongle/p/9242521.html
實現發送端
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /* * 實現UDP協議的發送端: * 實現封裝數據的類 java.net.DatagramPacket 將你的數據包裝 * 實現數據傳輸的類 java.net.DatagramSocket 將數據包發出去 * * 實現步驟: * 1. 創建DatagramPacket對象,封裝數據, 接收的地址和端口 * 2. 創建DatagramSocket * 3. 調用DatagramSocket類方法send,發送數據包 * 4. 關閉資源 * * DatagramPacket構造方法: * DatagramPacket(byte[] buf, int length, InetAddress address, int port) * * DatagramSocket構造方法: * DatagramSocket()空參數 * 方法: send(DatagramPacket d) * */ public class UDPSend { public static void main(String[] args) throws IOException{ // 創建數據包對象,封裝要發送的數據,接收端IP,端口 byte[] date = "你好UDP".getBytes(); //創建InetAdress對象,封裝自己的IP地址 InetAddress inet = InetAddress.getByName("127.0.0.1"); DatagramPacket dp = new DatagramPacket(date, date.length, inet,6000); //創建DatagramSocket對象,數據包的發送和接收對象 DatagramSocket ds = new DatagramSocket(); //調用ds對象的方法send,發送數據包 ds.send(dp); ds.close(); } }
實現接收端
import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; /* * 實現UDP接收端 * 實現封裝數據包 java.net.DatagramPacket 將數據接收 * 實現輸出傳輸 java.net.DatagramSocket 接收數據包 * * 實現步驟: * 1. 創建DatagramSocket對象,綁定端口號 * 要和發送端端口號一致 * 2. 創建字節數組,接收發來的數據 * 3. 創建數據包對象DatagramPacket * 4. 調用DatagramSocket對象方法 * receive(DatagramPacket dp)接收數據,數據放在數據包中 * 5. 拆包 * 發送的IP地址 * 數據包對象DatagramPacket方法getAddress()獲取的是發送端的IP地址對象 * 返回值是InetAddress對象 * 接收到的字節個數 * 數據包對象DatagramPacket方法 getLength() * 發送方的端口號 * 數據包對象DatagramPacket方法 getPort()發送端口 * 6. 關閉資源 */ public class UPDReceive { public static void main(String[] args) throws IOException{ // 創建數據包傳輸對象DatagramSocket綁定端口號 DatagramSocket ds = new DatagramSocket(6000); //創建字節數據 byte[] data = new byte[1024]; // 創建數據包對象,傳遞字節數組 DatagramPacket dp = new DatagramPacket(data, data.length); //調用ds對象的方法receive傳遞數據包 ds.receive(dp); //獲取發送端的IP地址對象 String ip = dp.getAddress().getHostAddress(); int port = dp.getPort(); //獲取接收到的字節個數 int length = dp.getLength(); System.out.println(new String(data, 0, length) + "........." + ip + ":" + port); ds.close(); } }