java實現udp發送端和接收端


 發送端:

package demo02;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;

/*
 * 實現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[] data="你好UDP".getBytes();
        //創建InetAddress對象,封裝自己的IP地址
        InetAddress inet=InetAddress.getByName("127.0.0.1");
        DatagramPacket dp=new DatagramPacket(data,data.length,inet,6000);
        //創建DatagramSocket對象,數據包的發送和接受對象
        DatagramSocket ds=new DatagramSocket();
        //調用ds對象的方法send,發送數據包
        ds.send(dp);
        ds.close();
                                
    }
}

 

 接收端

package demo01;

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地址對象
 *                 接受到的字節個數
 *                  數據包對象DatagramPacket()方法getLength()
 *                 發送方的端口號
 *              數據包對象DatagramPacket()方法getPort()
 *         6.關閉資源
 */
public class UDPReceive {
    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