Java-->打包發送信息(UDP協議)


--> 好像UDP 協議沒有TCP 協議應用得那么廣泛

--> UdpSender 類定義一個發送端(快遞公司)

package com.dragon.java.udpdatagram;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class UdpSender {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);

        // 創建一個DatagramSocket 快遞公司
        DatagramSocket socket = new DatagramSocket(10000);

        // 把信息打包 new DatagramPacket(發送的字節數組, 數組中要出去多少字節, 對方的ip地址, 對方的端口號);
        // 注意:數據報的長度不能超過 64K
        byte[] data = "你好".getBytes();
        DatagramPacket dPackage = new DatagramPacket(data, data.length,
                InetAddress.getByName("192.168.10.79"), 20000); // xx.xx.xx.255-->廣播ip

        String line = "";
        while ((line = scanner.nextLine()) != null) {
            data = line.getBytes();
            dPackage.setData(data);
            dPackage.setLength(data.length);

            // 發送包裹
            socket.send(dPackage);
        }
        // socket.close();
    }
}

--> UDPReceiver 類定義一個接收端(收件人)

package com.dragon.java.udpdatagram;

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

/*
 * 收件人
 */
public class UdpReceiver {
    public static void main(String[] args) throws IOException {
        // 綁定到指定的端口
        DatagramSocket socket = new DatagramSocket(20000);

        // 創建一個空包裹,用來接收發來的數據報的數據報包
        DatagramPacket p = new DatagramPacket(new byte[1024], 1024);

        while (true) {
            // 把收到的信息封裝到DatagramPacket
            socket.receive(p); // 接收信息的阻塞式方法

            InetAddress address = p.getAddress(); // 發送人
            int port = p.getPort(); // 發送方的端口
            byte[] data = p.getData(); // 存儲發送過來的數據的字節數組
            int length = p.getLength(); // 發送過來的信息的實際長度
            System.out.println(address + " " + port + " "
                    + new String(data, 0, length));

        }
        // socket.close();
    }
}

--> UDP 協議和TCP 協議相比好處是快速的(因為它無需花時間去保證數據是否損壞,無需花時間確定接受方是否存在並等待響應)、無連接的、不可靠的數據報傳輸協議。而TCP協議則相反,所以如何應用要根據實際需求。


免責聲明!

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



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