java UDP 通信:服務端與客服端


import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Stack;

public class MyUDB {

    /**
     * UDP服務端
     * @throws IOException
     */
    public static void UDPserver() throws IOException {
        //1.創建服務器端DatagtamSocket,指定端口號
        DatagramSocket socket = new DatagramSocket(2505);
        //2.創建數據報,用於接收客服端發送的數據
        byte[] data = new byte[1024];//創建字節數組,指定數據報的大小
        DatagramPacket packet = new DatagramPacket(data, data.length);//
        //3.接收客服端發送的消息
        System.out.println("服務器已經啟動。。。。。。。。。");
        socket.receive(packet);//此方法在收到數據之前會一直阻塞
        //4.讀取數據
        String info = new String(data,0,packet.getLength());
        System.out.println("服務器說"+info);
        /*
         * 響應客服端數據
         * */
        //1.定義客服端的地址、端口號、數據     
        InetAddress address = packet.getAddress();
        int port = packet.getPort();
        byte[]  data2 = "歡迎你".getBytes();
        //2.創建數據報,包含響應的數據信息
        DatagramPacket packet2 = new DatagramPacket(data2, data2.length,address,port);
        //3.響應客服端
        socket.send(packet2);
        //4.關閉資源
        socket.close();

    }

    /**
     * UDP客服端
     * @throws IOException
     */
    public static void  UDPclient() throws IOException {
        // 1.定義服務器的地址、端口號、數據        
        InetAddress address = InetAddress.getByName("202.202.43.125");
        int port = 2505;
        byte[] data ="我是客服端".getBytes();
        //2.創建數據報,包含發送的數據信息
        DatagramPacket packet = new DatagramPacket(data, data.length,address,port);
        //3.創建DatagramSocket對象
        DatagramSocket socket = new DatagramSocket();
        //4.向服務器發送數據報
        socket.send(packet);

        /*
         * 接收服務器端的數據
         * */
        //1.創建數據報,用於接收服務器端響應的數據
        byte[] data2 = new byte[1024];
        DatagramPacket packet2 = new DatagramPacket(data2, data2.length);
        //2.接收服務器響應的數據
        socket.receive(packet2);
        //3.讀取數據
        String reply = new String(data2,0,packet2.getLength());
        System.out.println("服務器說:"+reply);
        //4.關閉資源
        socket.close();
    }
}

 


免責聲明!

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



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