java-UDP協議實現數據的發送和接收


實現發送端


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();
	}

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM