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();
}
}
}
最後給個運行結果截圖: