最近几天又看了看BIO和NIO,今天记一下BIO的一个小例子
package com.fyd.bio; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /*** * @Author付亚东 * @Date 2020/5/26 20:57 ****/ public class BIOServer { public static void main(String[] args) throws Exception{ //1.创建一个线程池 ExecutorService executorService = Executors.newCachedThreadPool(); //2.创建一个serversocker ServerSocket serverSocket = new ServerSocket(6666); System.out.println("服务器启动了"); while (true){ //等待客户端链接 Socket socket = serverSocket.accept(); System.out.println("链接一个客户端"); //创建一个线程通讯 executorService.execute(new Runnable() { @Override public void run() { handler(socket); } }); } } /*** * 编写handler方法通信 * @param socket */ private static void handler(Socket socket){ InputStream inputStream=null; System.out.println("线程信息"); System.out.println("线程id"+Thread.currentThread().getId()); System.out.println("线程name"+Thread.currentThread().getName()); try { byte[] bytes = new byte[1024]; //获取客户端的输入流 inputStream = socket.getInputStream(); while (true){ int i = inputStream.read(bytes); if(i!=-1){ System.out.println("客户端数据:"+new String(bytes,0,i)); }else { break; } } }catch (Exception e){ e.printStackTrace(); }finally { try { if(inputStream!=null){ inputStream.close(); } if(socket!=null){ socket.close(); } }catch (Exception e){ e.printStackTrace(); } } } }
可以使用telnet当做客户端
telnet 127.0.0.1 6666
链接成功后,按Ctrl+]
发送数据:
服务端接受数据: