本文共 1818 字,大约阅读时间需要 6 分钟。
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(); } } }}
转载地址:http://uhcdi.baihongyu.com/