UDP通信協議示例

      UDP的通訊與TCP的不同,UDP使用DatagramPacket和DatagramSocket:DatagramPacket表示存放數據的數據報,DatagramSocket表示接受或發送數據報的套接字.TCP使用ServerSocket和Socket。

UDP示例源碼(註釋很詳細):

1.發送UDP數據報的一端,假設爲server:

public class UDPServerDemo {
    public static void main(String[] args) {
        String info = "我是帥到被人砍的Mr Zhang";   //要發送的信息
        byte[] bytes = info.getBytes();            //字節數組
        //封裝一個udp數據包
        try {
            DatagramPacket dp = new DatagramPacket(
                    bytes,//數據包數據
                    0,//分組數據偏移量
                    bytes.length,//長度
                    InetAddress.getByName("127.0.0.1"),//目的地址
                    8000//目的端口號
            );
            //DatagramPacket表示存放數據的數據報,DatagramSocket表示接受或發送數據報的套接字
            DatagramSocket socket = new DatagramSocket(9000);//本程序端口
            socket.send(dp);       //發送用send()即可
            socket.close();        //記得關閉socket
        } catch (UnknownHostException | SocketException e) {//某些異常不可以放在一起的
            e.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    }
}

2.接收數據報的一端,假設爲client:

public class UDPClientDemo {
    public static void main(String[] args) {
        byte[] bytes = new byte[1024];
        DatagramPacket dp = new DatagramPacket(bytes,bytes.length);//空的

        try {
            DatagramSocket socket = new DatagramSocket(8000);
            System.out.println("正在接受數據中");
            socket.receive(dp);//開始接收數據
            String s = new String(dp.getData(),0,dp.getLength());
            System.out.println(s);
            socket.close();
        } catch (SocketException e) {
            e.printStackTrace();
        }catch (IOException e1){
            e1.printStackTrace();
        }

    }
}

3.程序效果圖(要先運行client,使其處於接收數據的狀態,再運行server):



發佈了35 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章