91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Java實現Socket通信簡單BIO demo

發布時間:2020-05-22 13:42:32 來源:億速云 閱讀:370 作者:鴿子 欄目:開發技術

話不多說,直接上代碼和運行結果。

服務端代碼:

public static void main(String[] args) {
        final int PORT = 8899;
        ServerSocket serverSocket = null;
        BufferedWriter writer = null;
        try {
            serverSocket = new ServerSocket(PORT);
            System.out.println("服務器已啟動!正在監聽端口"+PORT);
            while (true){
               Socket socket = serverSocket.accept();
                System.out.println("客戶端 "+socket.getPort()+" 已連接");
                BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                String message = reader.readLine();
                if (message != null){
                    System.out.println("收到一條來自客戶端 "+socket.getPort()+" 發送的消息:"+message);
                }
                //加了\n readLine才能生效
                writer.write("你才是" + message + "\n");
                writer.flush(); //清理緩沖區
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(writer != null){
                try {
                    writer.close();
                    System.out.println("服務器掛掉了。。再見");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

客戶端代碼:

    public static void main(String[] args) {
        final String Host = "127.0.0.1";
        final int Port = 8899;
        BufferedWriter writer = null;
        try {
            Socket socket = new Socket(Host,Port);
            BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
            BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
            String message = console.readLine();
            writer.write(message+"\n");
            writer.flush();

            String responseMsg = reader.readLine();
            System.out.println("收到了來自服務器的回復:" + responseMsg);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(writer != null){
                try {
                    writer.close();
                    System.out.println("客戶端關閉了連接");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

先運行Server代碼,此時服務成功啟動!:

Java實現Socket通信簡單BIO demo

再運行客戶端代碼,此時服務端和客戶端連接成功!:

Java實現Socket通信簡單BIO demo

在客戶端發送消息:

Java實現Socket通信簡單BIO demo

Java實現Socket通信簡單BIO demo

多線程版

這個教程是一個多線程的版本,其實就是把服務端的代碼中可以復用的部分抽出來單獨作為一個內部類,繼承Thread,然后在while循環里,每當有一個客戶端前來訪問,都將開啟一個線程專門來處理這個客戶端的請求

實際上,上面的極簡版本代碼,完全也可以多復制幾個Client, 然后同時運行,Server端代碼會一個個的按照順序收到客戶端的請求并返回對應的結果,while循環永不疲倦,除非斷電。

向AI問一下細節

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

AI

聊城市| 普安县| 土默特左旗| 惠东县| 进贤县| 巴楚县| 汽车| 岳池县| 太康县| 永定县| 太谷县| 景宁| 四会市| 牙克石市| 隆子县| 长岭县| 华宁县| 汪清县| 扶风县| 阿拉尔市| 即墨市| 湘潭市| 化隆| 乐山市| 伽师县| 右玉县| 沭阳县| 临海市| 九江县| 庆安县| 疏勒县| 马龙县| 永泰县| 梨树县| 静宁县| 合川市| 永安市| 礼泉县| 泰顺县| 安平县| 晴隆县|