BIO是最基本的IO,其流程图如下:
示例代码:
public class Server {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket();
ss.bind(new InetSocketAddress("127.0.0.1",8888));
while(true) {
System.out.println("开始接收消息");
Socket s = ss.accept();
System.out.println("已经接收到消息");
new Thread(()->{
handler(s);
}).start();
}
}
private static void handler(Socket s) {
try {
byte[] words = new byte[1024];
int read = s.getInputStream().read(words);
System.out.println(read+"-------"+new String(words));
Thread.sleep(2000);
s.getOutputStream().write("总部收到 copy that".getBytes("gbk"));
s.shutdownOutput();
s.shutdownInput();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class Client {
public static void main(String[] args) {
Socket s = new Socket();
try {
System.out.println(Thread.currentThread().getName() + "=======" + "client 建立连接");
s.connect(new InetSocketAddress("127.0.0.1", 8888));
System.out.println(Thread.currentThread().getName() + "=======" + "client 发送消息");
s.getOutputStream().write("client hello".getBytes());
s.getOutputStream().flush();
byte[] result = new byte[1024];
s.getInputStream().read(result);
System.out.println(new String(result, "gbk"));
s.getInputStream().close();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
s.close();
System.out.println("客户端结束");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}