阻塞IO:BIO 服務端與客戶端 基於Socket的實例

BIO:Block Input Output 阻塞式的輸入和輸出,面向數據流。示例代碼如下:

1、服務端Server

package com.example.bio.server;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class BioServer {

    public static void main(String[] args) {
        //BIO代碼
        try {
            ServerSocket server = new ServerSocket(8080);
            System.out.println("BIO服務端啓動......");
            //此處可以做成線程池,支持多客戶端連接,爲了簡單示例中不再體現
            Socket socket = server.accept();
            if(socket.isConnected()){
                System.out.println("BIO客戶端已連接......");
            }
            PrintWriter pw = new PrintWriter(socket.getOutputStream());
            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String message = br.readLine();
            System.out.println("服務端接收到客戶端信息爲:"+ message);
            pw.println("Client Say \" hello Bio\"");
            pw.close();
            br.close();
            socket.close();
            server.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2、客戶端Client

package com.example.bio.client;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class BioClient {

    public static void main(String[] args) {
        //BIO
        try {
            Socket socket = new Socket("127.0.0.1",8080);
            if(socket.isConnected()){
                System.out.println("客戶端已連接到服務器......");
            }
            PrintWriter pw = new PrintWriter(socket.getOutputStream());
            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String name = "hello Bio";
            pw.println(name);
            pw.flush();
            System.out.println("客戶端接收到服務端信息爲:" + br.readLine());
            pw.close();
            br.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

最後給個運行結果截圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章