網絡編程-UDP通信程序demo

需求:
UDP發送端:數據來自於鍵盤錄入,直到輸入的數據是886,發送數據結束
UDP接收端:因爲接收端不知道發送端什麼時候停止發送,故採用死循環接收
實現:

SendDemo.java

package com.yang.scoket.udp;

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

/**
 * @author WangYang
 * @version 1.0
 * @create 2020-02-15 11:28
 * <p>
 * UDP 發送數據
 * 數據來自於鍵盤錄入,直到輸入的數據是886,發送數據結束
 */
public class SendDemo {
    public static void main(String[] args) throws IOException {
        //創建發送端的socket對象
        DatagramSocket socket = new DatagramSocket();
        //讀入鍵盤錄入的數據
        BufferedReader bis = new BufferedReader(new InputStreamReader(System.in));
        String line;
        while ((line = bis.readLine()) != null) {

            //創建數據,並把數據打包
            byte[] by = line.getBytes();
            InetAddress address = InetAddress.getByName("localhost");
            DatagramPacket dp = new DatagramPacket(by, by.length, address, 10086);

            //發送數據
            socket.send(dp);
            if ("886".equals(line)) {//如果輸入的數據是886,結束髮送端
                break;
            }

        }
        //關閉發送端
        socket.close();
    }
}

ReceiveDemo.java


package com.yang.scoket.udp;

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


/**
 * @author WangYang
 * @version 1.0
 * @create 2020-02-15 11:43
 *
 * UDP接收數據:
 *         因爲接收端不知道發送端什麼時候停止發送,故採用死循環接收
 */
public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
        //創建接收端的Socket對象(DatagramSocket)
        DatagramSocket receive = new DatagramSocket(10086);

        while (true){
            //創建一個數據包,用於接收數據
            byte[] by = new byte[1024];
            DatagramPacket dp = new DatagramPacket(by,by.length);
            //調用DatagramSocket對象的方法接收數據
            receive.receive(dp);
            //解析數據包,並把數據在控制檯顯示
            System.out.println("接收的數據是:" + new String(dp.getData(),0,dp.getLength()));
        }
        //死循環接收,不需要關閉接收端
        //receive.close();
    }
}

結果:

在這裏插入圖片描述
在這裏插入圖片描述

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