中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java如何實現UDP多線程在線咨詢

發布時間:2021-04-20 12:46:52 來源:億速云 閱讀:205 作者:小新 欄目:開發技術

這篇文章主要介紹Java如何實現UDP多線程在線咨詢,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Java是什么

Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。

具體內容如下

1.發送的線程

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;

//發送線程
public class TalkSend implements Runnable {
    DatagramSocket socket = null;
    BufferedReader reader = null;
    private int formPort; //自身端口
    private String toIP; //發送到的IP
    private int toPort; //發送到的端口

    public TalkSend(int formPort, String toIP, int toPort) {
        this.formPort = formPort;
        this.toIP = toIP;
        this.toPort = toPort;

        try {
            socket = new DatagramSocket(formPort);
            reader = new BufferedReader(new InputStreamReader(System.in)); //獲取控制臺輸入
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void run() {
        while(true) {
            try {
                String data = reader.readLine(); //獲取到的數據
                byte[] datas = data.getBytes(); //轉換為需要的字節數組
                //將數據打包成包
                DatagramPacket packet = new DatagramPacket(datas,0, datas.length,new InetSocketAddress(this.toIP,this.toPort));
                socket.send(packet); //發送包
                //退出指令
                if(packet.equals("bye")){
                    break;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        socket.close();
    }
}

2.接收的線程

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
//接收線程
public class TalkReceive implements Runnable {

    DatagramSocket socket = null; //與發送端的socket為同一個,實現通信
    private int port;
    private String msgFrom; //標志信息來源

    public TalkReceive(int port, String msgFrom) {
        this.port = port;
        this.msgFrom= msgFrom;
        try {
            socket = new DatagramSocket(port);
        } catch (SocketException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void run() {
        while (true){

            try {
                byte[] container = new byte[1024];
                DatagramPacket packet = new DatagramPacket(container, 0, container.length);
                socket.receive(packet);//接收數據

                byte[] data = packet.getData();
                String receiveData = new String(data, 0, data.length);

                System.out.println(msgFrom+":"+receiveData);

                if(receiveData.equals("bye")){
                    break;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        socket.close();
    }
}

3.模擬學生端

//模擬學生
public class TalkStudent {
    public static void main(String[] args) {
        new Thread(new TalkSend(7777, "localhost", 9999)).start();
        new Thread(new TalkReceive(8888, "老師")).start();
    }
}

4.模擬老師端

//模擬老師
public class TalkTeacher {
    public static void main(String[] args) {
        new Thread(new TalkSend(5555, "localhost", 8888)).start();
        new Thread(new TalkReceive(9999, "學生")).start();
    }
}

5.截圖

學生端:

Java如何實現UDP多線程在線咨詢

老師端:

Java如何實現UDP多線程在線咨詢

6.總結

首先創建一個發送線程,里面定義要發送到的IP地址和端口,再創建一個DatagramSocket來進行通信,創建一個BufferReader(new InputStreamReader(System.in))來獲取控制臺的輸入的數據,將獲取到的數據打包進行發送。之后創建一個接收線程,里面定義自身的端口即可,再創建一個和發送端一樣的DatagramSocket來進行通信,接收數據進行打印輸出即可。最后模擬學生端和老師端,創建這兩個線程來進行通信。學生發送線程到的端口是老師的接收端口,老師發送的端口是學生的接收端口,這樣才能互相通信。

以上是“Java如何實現UDP多線程在線咨詢”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

天长市| 盈江县| 和田市| 颍上县| 晋中市| 泸定县| 樟树市| 吴旗县| 鄂伦春自治旗| 九龙县| 铁岭市| 垫江县| 扎兰屯市| 武胜县| 新竹市| 塔城市| 琼结县| 弋阳县| 西乡县| 南部县| 宁海县| 宁都县| 浮梁县| 云阳县| 滨海县| 乐清市| 两当县| 元谋县| 项城市| 昌图县| 达孜县| 赤壁市| 汉沽区| 冕宁县| 高平市| 安化县| 同德县| 济宁市| 宁城县| 寿光市| 南澳县|