1. 程式人生 > >UDP完成資料的傳送和接收的程式碼

UDP完成資料的傳送和接收的程式碼

要實現UDP通訊需要建立一個傳送端程式和一個接收端程式,很明顯,在通訊時只有接收端程式先執行,才能避免因傳送端傳送的資料無法接收,而造成資料丟失。因此,首先需要來完成接收端程式的編寫。

UDP完成資料的傳送

/*

* 傳送端

 * 1,建立DatagramSocket物件

 * 2,建立DatagramPacket物件,並封裝資料

 * 3,傳送資料

 * 4,釋放流資源

 */

public class UDPSend {

    public static void main(String[] args) throws IOException {

        //1,建立DatagramSocket物件

        DatagramSocket sendSocket = new DatagramSocket();

        //2,建立DatagramPacket物件,並封裝資料

        //public DatagramPacket(byte[] buf, int length, InetAddress address,  int port)

        //構造資料報包,用來將長度為 length 的包傳送到指定主機上的指定埠號。

        byte[] buffer = "hello,UDP".getBytes();

        DatagramPacket dp =

new DatagramPacket(buffer, buffer.length, InetAddress.getByName("192.168.75.58"), 12306);

        //3,傳送資料

        //public void send(DatagramPacket p) 從此套接字傳送資料報包

        sendSocket.send(dp);

        //4,釋放流資源

        sendSocket.close();

    }

}

UDP完成資料的接收

/*

 * UDP接收端

 *

 * 1,建立DatagramSocket物件

 * 2,建立DatagramPacket物件

 * 3,接收資料儲存到DatagramPacket物件中

 * 4,獲取DatagramPacket物件的內容

 * 5,釋放流資源

 */

public class UDPReceive {

    public static void main(String[] args) throws IOException {

        //1,建立DatagramSocket物件,並指定埠號

        DatagramSocket receiveSocket = new DatagramSocket(12306);

        //2,建立DatagramPacket物件, 建立一個空的倉庫

        byte[] buffer = new byte[1024];

        DatagramPacket dp = new DatagramPacket(buffer, 1024);

        //3,接收資料儲存到DatagramPacket物件中

        receiveSocket.receive(dp);

        //4,獲取DatagramPacket物件的內容

        //誰發來的資料  getAddress()

        InetAddress ipAddress = dp.getAddress();

        String ip = ipAddress.getHostAddress();//獲取到了IP地址

        //發來了什麼資料  getData()

        byte[] data = dp.getData();

        //發來了多少資料 getLenth()

        int length = dp.getLength();

        //顯示收到的資料

        String dataStr = new String(data,0,length);

        System.out.println("IP地址:"+ip+ "資料是"+ dataStr);

        //5,釋放流資源

        receiveSocket.close();

    }

}