1. 程式人生 > 實用技巧 >JAVA UDP協議實現例子

JAVA UDP協議實現例子

JAVA提供了DatagramSocket類作為基於UDP協議的Socket

傳送資料

import java.io.IOException;
import java.net.*;

public class SendDemo {
    public static void main(String[] args) throws IOException {
        //DatagramSocket()
        //構造資料報套接字並將其繫結到本地主機上的任何可用埠。
        DatagramSocket da = new DatagramSocket();

        //DatagramPacket(byte[] buf, int length, InetAddress address, int port)
        //構造用於傳送長度的分組的資料報包 length指定主機上到指定的埠號。

        byte[] bye="爺來辣".getBytes();
        int len=bye.length;
        InetAddress adress = InetAddress.getByName("192.168.1.255");
        int port=10086;
        DatagramPacket dp=new DatagramPacket(bye,len,adress,port);
        //public void send(DatagramPacket p)
        //從此套接字傳送資料報包
        da.send(dp);
        //close()
        //關閉此資料報套接字。
        da.close();
    }
}

接受資料

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

public class ReciveDemo {
    public static void main(String[] args) throws IOException {
        //DatagramSocket(int port)
        //構造資料報套接字並將其繫結到本地主機上的指定埠。
        DatagramSocket d=new DatagramSocket(10086);
        //建立資料包,接收資料
        //        DatagramPacket(byte[] buf, int length)
        //        構造一個 DatagramPacket用於接收長度的資料包 length
        byte[] bye=new byte[1024];
        DatagramPacket dp = new DatagramPacket(bye,bye.length);
        //接受資料
        d.receive(dp);
        //解析資料並輸出資料
        //getData()
        //返回資料緩衝區。
        byte[] datas=dp.getData();
        String temp=new String(datas);
        System.out.println(temp);
    }
}