最近在学Java的NIO编程,学习过程中编写了一个Demo,特此记录。

  • 代码目录结构:

    

java windows客户端 java nio 客户端_客户端

  • 代码描述: 使用ThreadPool启动十个客户端线程模拟十个请求,并与服务端保持长连接。每个客户端每隔3秒向服务端发送数据,服务端监听客户端的连接和可读事件,并输出客户端内容。半分钟过后线程池强制中断客户端线程,客户端关闭与服务端的连接,服务端监听客户端的关闭,并将相应事件从selector中取消。
  • 客户端代码内容:

  

NioClient.java 主线程,启动客户端程序。
1 package com.vincent.fat.core.nio.client;
 2 
 3 
 4 import java.util.concurrent.ExecutorService;
 5 import java.util.concurrent.Executors;
 6 import java.util.concurrent.TimeUnit;
 7 import java.util.concurrent.atomic.AtomicLong;
 8 
 9 public class NioClient {
10     private static final ExecutorService executor = Executors.newCachedThreadPool();
11     private static final AtomicLong countSend=new AtomicLong(0L);
12     public static void main(String[] args) throws InterruptedException {
13         clientStart();
14     }
15     public static void clientStart() throws InterruptedException {
16         OnlyNosClients();
17     }
18 
19     private static void OnlyNosClients() throws InterruptedException {
20         for (int i = 0; i < 10; i++) {
21             executor.submit(
22                     new RequestRemoteServerWithTcp("localhost",17899,countSend)
23             );
24         }
25         //10秒钟后中断所有线程
26         TimeUnit.SECONDS.sleep(10);
27         executor.shutdownNow();
28     }
29 
30     private static void startNewClients()  {
31         while (!Thread.currentThread().isInterrupted())
32         {
33             executor.submit(
34                     new RequestRemoteServerWithTcp("localhost",17899,countSend)
35             );
36         }
37     }
38 }
RequestRemoteServerWithTcp.java 客户端启动代码
其中 com.github.javafaker.Faker 是用来生成随机数据的类,org.slf4j.Logger 是用于日志输出的类
1 package com.vincent.fat.core.nio.client;
  2 
  3 import com.github.javafaker.Faker;
  4 import org.slf4j.Logger;
  5 import org.slf4j.LoggerFactory;
  6 
  7 import java.io.IOException;
  8 import java.net.InetSocketAddress;
  9 import java.net.SocketAddress;
 10 import java.nio.ByteBuffer;
 11 import java.nio.channels.SocketChannel;
 12 import java.nio.charset.StandardCharsets;
 13 import java.util.Locale;
 14 import java.util.Objects;
 15 import java.util.concurrent.TimeUnit;
 16 import java.util.concurrent.atomic.AtomicLong;
 17 
 18 public class RequestRemoteServerWithTcp implements Runnable {
 19     public static  final Logger logger = LoggerFactory.getLogger(RequestRemoteServerWithTcp.class);
 20     public static  final Locale locale=Locale.SIMPLIFIED_CHINESE;
 21     public static  final Faker faker =new Faker(locale);
 22     private final String serverAddress;
 23     private final int serverPoint;
 24     private int localPoint;
 25     private final AtomicLong countSend ;
 26     public RequestRemoteServerWithTcp(String serverAddress,int serverPoint,AtomicLong countSend){
 27         this.serverAddress=serverAddress;
 28         this.serverPoint=serverPoint;
 29         this.countSend=countSend;
 30     }
 31     /**
 32      * When an object implementing interface <code>Runnable</code> is used
 33      * to create a thread, starting the thread causes the object's
 34      * <code>run</code> method to be called in that separately executing
 35      * thread.
 36      * <p>
 37      * The general contract of the method <code>run</code> is that it may
 38      * take any action whatsoever.
 39      *
 40      * @see Thread#run()
 41      */
 42     @Override
 43     public void run() {
 44         try {
 45             this.doRequest();
 46         } catch (IOException ioException) {
 47             ioException.printStackTrace();
 48         }
 49     }
 50     private void doRequest() throws IOException {
 51         SocketChannel socketChannel = null;
 52         try {
 53             socketChannel = SocketChannel.open(new InetSocketAddress(this.serverAddress,this.serverPoint));
 54             socketChannel.configureBlocking(false);
 55             SocketAddress localAddress = socketChannel.getLocalAddress();
 56             while(!socketChannel.isConnected()){}
 57             logger.debug("[{}]完成连接",socketChannel.getLocalAddress());
 58             this.localPoint = ((InetSocketAddress) socketChannel.getLocalAddress()).getPort();
 59             while (!Thread.currentThread().isInterrupted())
 60             {
 61                 ByteBuffer buffer = this.prepareData(this.localPoint);
 62                 socketChannel.write(buffer);
 63                 buffer.clear();
 64                 long currentSendCount = this.countSend.incrementAndGet();
 65                 logger.info("客户端[{}]的第【{}】条数据发送完成",localAddress,currentSendCount);
 66                 TimeUnit.SECONDS.sleep(3);
 67                 ByteBuffer readBuffer = ByteBuffer.allocate(2*1024);
 68                 getResponseData(socketChannel, readBuffer);
 69             }
 70         } catch (IOException ioException) {
 71             logger.error("ioException:",ioException);
 72         }catch (Exception e)
 73         {
 74             logger.error("端口为{}的客户端报错",this.localPoint,e);
 75         }finally {
 76             if (!Objects.isNull(socketChannel)&&socketChannel.isOpen())
 77             {
 78                 //关闭输出通道
 79                 socketChannel.shutdownOutput();
 80                 socketChannel.shutdownInput();
 81                 socketChannel.close();
 82                 logger.info("【{}】的输出通道关闭!",this.localPoint);
 83             }
 84         }
 85 
 86     }
 87 
 88     private void getResponseData(SocketChannel socketChannel, ByteBuffer readBuffer) throws IOException {
 89         //接收客户端数据
 90         int readBytes = 0;
 91         StringBuilder content = new StringBuilder();
 92         while ((readBytes=socketChannel.read(readBuffer))>0) {
 93             //处理数据
 94             content.append(new String(readBuffer.array(), StandardCharsets.UTF_8));
 95             readBuffer.clear();
 96         }
 97         //判断服务端断开连接
 98         //当服务端没有断开连接的时候readBytes=0这样保持长连接
 99         //当服务端断开连接的时候readBytes=-1
100         if (readBytes<0)
101         {
102             logger.debug("服务端断开连接.....");
103             socketChannel.close();
104         }
105         //处理数据
106         else {
107             logger.info("收到的内容是: <{}>",
108                     content.toString());
109         }
110     }
111 
112     private ByteBuffer prepareData(int channelPoint)  {
113         StringBuilder name =new StringBuilder(faker.university().name());
114         name.insert(0,(channelPoint+"==========>"));
115         return ByteBuffer.wrap(name.toString().getBytes(StandardCharsets.UTF_8));
116     }
117 }

  服务端代码:NioServer.java

1 package com.vincent.fat.core.nio.server;
  2 
  3 import cn.hutool.core.util.RandomUtil;
  4 import org.slf4j.Logger;
  5 import org.slf4j.LoggerFactory;
  6 
  7 import java.io.IOException;
  8 import java.net.InetSocketAddress;
  9 import java.nio.ByteBuffer;
 10 import java.nio.channels.*;
 11 import java.nio.charset.StandardCharsets;
 12 import java.util.Iterator;
 13 import java.util.Objects;
 14 import java.util.Set;
 15 import java.util.concurrent.*;
 16 import java.util.concurrent.atomic.AtomicInteger;
 17 
 18 public class NioServer {
 19     public static final Logger logger = LoggerFactory.getLogger(NioServer.class);
 20     private static final Long TIME_OUT= 3000L;
 21     private static final BlockingQueue<Future<String>> futureQueue =new LinkedBlockingQueue<>();
 22     private static final AtomicInteger selectorNos=new AtomicInteger(0);
 23     private static final AtomicInteger handleDataNo=new AtomicInteger(0);
 24     private static final AtomicInteger resDataNo=new AtomicInteger(0);
 25     public static void main(String[] args) throws IOException, InterruptedException {
 26         startServer(args);
 27     }
 28     public static void startServer(String[] args) throws IOException, InterruptedException {
 29         //新建channel
 30         ServerSocketChannel serverSocketChannel =ServerSocketChannel.open();
 31         //设置服务端属性,为非阻塞模式
 32         serverSocketChannel.configureBlocking(false);
 33         //绑定服务端端口
 34         serverSocketChannel.bind(new InetSocketAddress(17899));
 35         //新建selector
 36         Selector selector = Selector.open();
 37         //注册channel到selector
 38         serverSocketChannel.register(selector, SelectionKey.OP_ACCEPT);
 39         logger.debug("服务在[{}]启动成功,正在监听事件。。。。。",serverSocketChannel.getLocalAddress());
 40         //while循环监听事件
 41         while (!Thread.currentThread().isInterrupted())
 42         {
 43             if (selector.select(TIME_OUT)>0)
 44             {
 45                 logger.warn("第【{}】轮监听===============================================",
 46                         selectorNos.incrementAndGet());
 47                 //获取事件类型
 48                 Set<SelectionKey> selectionKeys = selector.selectedKeys();
 49                 //selector监听到的ready事件集
 50                 Iterator<SelectionKey> readyKeys = selectionKeys.iterator();
 51                 //处理事件
 52                 while (readyKeys.hasNext())
 53                 {
 54                     SelectionKey key = readyKeys.next();
 55                     //移除channel事件
 56                     readyKeys.remove();
 57                     SocketChannel socketChannel =null;
 58                     try {
 59 
 60                         //连接
 61                         if (key.isValid()&&key.isAcceptable()) {
 62                             socketChannel = ((ServerSocketChannel) key.channel()).accept();
 63                             socketChannel.configureBlocking(false);
 64                             logger.info("Accept  收到了来自于【{}】的连接请求", socketChannel.getRemoteAddress());
 65                             //将客户端的可读事件注册到selector中监听
 66                             socketChannel.register(key.selector(), SelectionKey.OP_READ);
 67                         }
 68                         //数据可读
 69                         if (key.isValid()&&key.isReadable()) {
 70                             socketChannel = (SocketChannel)key.channel();
 71                             logger.info("Readable   客户端【{}】准备好了数据  ",socketChannel.getRemoteAddress());
 72                             getRequestData(key);
 73                         }
 74                         if (key.isValid()&&key.isWritable())
 75                         {
 76 //                            if (RandomUtil.randomInt(0,10)>8)
 77 //                            {
 78 //                                doResponse(key);
 79 //                            }
 80                         }
 81                     }catch (IOException ioException)
 82                     {
 83                         logger.error("服务端IO异常:\n",ioException.getCause());
 84                         if (!Objects.isNull(socketChannel))
 85                         {
 86                             socketChannel.close();
 87                             key.cancel();
 88                         }
 89                     }
 90                 }
 91             }
 92         }
 93         //关闭channel
 94         serverSocketChannel.close();
 95         selector.close();
 96         logger.info("进程退出");
 97     }
 98     //处理连接请求
 99     private static void getRequestData(SelectionKey selectionKey) throws IOException {
100         SocketChannel socketChannel = (SocketChannel)selectionKey.channel();
101         //写入数据到buffer
102         try {
103             if (socketChannel.isOpen())
104             {
105                 //将写事件注册到selector
106 //                socketChannel.register(selectionKey.selector(), selectionKey.interestOps()|SelectionKey.OP_WRITE);
107                 //准备buffer
108                 ByteBuffer byteBuffer = ByteBuffer.allocate(2048);
109                 StringBuilder content = new StringBuilder();
110                 int readBytes = 0;
111                 while ((readBytes=socketChannel.read(byteBuffer))>0) {
112                     //处理数据
113                     content.append(new String(byteBuffer.array(), StandardCharsets.UTF_8));
114                     byteBuffer.clear();
115                 }
116                 //判断客户端断开连接
117                 //当客户端没有断开连接的时候readBytes=0这样保持长连接
118                 //当客户端断开连接的时候readBytes=-1
119                 if (readBytes<0)
120                 {
121                     logger.debug("远程客户端【{}】断开连接.....",socketChannel.getRemoteAddress());
122                     socketChannel.close();
123                     selectionKey.cancel();
124                 }
125                 //处理数据
126                 else {
127                     logger.info("第【{}】次处理数据,收到的内容是: {}",handleDataNo.incrementAndGet(),
128                             content.toString());
129                 }
130 
131             }
132             else {
133                 logger.warn("channel 已经关闭!");
134                 socketChannel.shutdownInput();
135                 socketChannel.shutdownOutput();
136                 socketChannel.close();
137                 selectionKey.cancel();
138             }
139         }catch (Exception e)
140         {
141             logger.error("客户端【{}】错误:",socketChannel,e.getCause());
142             //关闭连接
143             socketChannel.shutdownInput();
144             socketChannel.shutdownOutput();
145             //将channel从selector中删除
146             selectionKey.cancel();
147             logger.info("socketChannel【{}】已经从selector取消注册",socketChannel.getRemoteAddress());
148             socketChannel.close();
149         }
150     }
151     //返回响应数据
152     private static void doResponse(SelectionKey selectionKey) throws IOException {
153         SocketChannel socketChannel = (SocketChannel)selectionKey.channel();
154         String resData=resDataNo.incrementAndGet()+"=========>"+ RandomUtil.randomStringUpper(10);
155         logger.debug("响应数据[{}]到【{}】",resData,socketChannel.getRemoteAddress());
156         socketChannel.write(ByteBuffer.wrap(resData.getBytes()));
157     }
158 }

先后启动服务端和客户端,运行结果:

服务端运行日志:

11:01:16.817 [main] DEBUG com.vincent.fat.core.nio.server.NioServer - 服务在[/0:0:0:0:0:0:0:0:17899]启动成功,正在监听事件。。。。。
11:01:19.840 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【1】轮监听===============================================
11:01:19.841 [main] INFO com.vincent.fat.core.nio.server.NioServer - Accept  收到了来自于【/127.0.0.1:63958】的连接请求
11:01:19.841 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【2】轮监听===============================================
11:01:19.841 [main] INFO com.vincent.fat.core.nio.server.NioServer - Accept  收到了来自于【/127.0.0.1:63959】的连接请求
11:01:19.842 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【3】轮监听===============================================
11:01:19.843 [main] INFO com.vincent.fat.core.nio.server.NioServer - Accept  收到了来自于【/127.0.0.1:63960】的连接请求
11:01:19.843 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【4】轮监听===============================================
11:01:19.843 [main] INFO com.vincent.fat.core.nio.server.NioServer - Accept  收到了来自于【/127.0.0.1:63961】的连接请求
11:01:19.847 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【5】轮监听===============================================
11:01:19.847 [main] INFO com.vincent.fat.core.nio.server.NioServer - Accept  收到了来自于【/127.0.0.1:63962】的连接请求
11:01:19.848 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【6】轮监听===============================================
11:01:19.848 [main] INFO com.vincent.fat.core.nio.server.NioServer - Accept  收到了来自于【/127.0.0.1:63963】的连接请求
11:01:19.850 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【7】轮监听===============================================
11:01:19.850 [main] INFO com.vincent.fat.core.nio.server.NioServer - Accept  收到了来自于【/127.0.0.1:63964】的连接请求
11:01:19.851 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【8】轮监听===============================================
11:01:19.851 [main] INFO com.vincent.fat.core.nio.server.NioServer - Accept  收到了来自于【/127.0.0.1:63965】的连接请求
11:01:19.853 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【9】轮监听===============================================
11:01:19.853 [main] INFO com.vincent.fat.core.nio.server.NioServer - Accept  收到了来自于【/127.0.0.1:63966】的连接请求
11:01:19.853 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【10】轮监听===============================================
11:01:19.854 [main] INFO com.vincent.fat.core.nio.server.NioServer - Accept  收到了来自于【/127.0.0.1:63967】的连接请求
11:01:20.091 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【11】轮监听===============================================
11:01:20.091 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63962】准备好了数据  
11:01:20.092 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【1】次处理数据,收到的内容是: 63962==========>西南科技大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
11:01:20.092 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【12】轮监听===============================================
11:01:20.092 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63964】准备好了数据  
11:01:20.092 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【2】次处理数据,收到的内容是: 63964==========>西北技术大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
11:01:20.094 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【13】轮监听===============================================
11:01:20.095 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63961】准备好了数据  
11:01:20.095 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【3】次处理数据,收到的内容是: 63961==========>西科技大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:20.095 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【14】轮监听===============================================
11:01:20.096 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63958】准备好了数据  
11:01:20.096 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【4】次处理数据,收到的内容是: 63958==========>东大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
11:01:20.096 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【15】轮监听===============================================
11:01:20.096 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63959】准备好了数据  
11:01:20.096 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【5】次处理数据,收到的内容是: 63959==========>西北科技大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
11:01:20.100 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【16】轮监听===============================================
11:01:20.100 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63960】准备好了数据  
11:01:20.101 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【6】次处理数据,收到的内容是: 63960==========>西南大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
11:01:20.102 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【17】轮监听===============================================
11:01:20.102 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63965】准备好了数据  
11:01:20.102 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【7】次处理数据,收到的内容是: 63965==========>西南科技大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
11:01:20.102 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【18】轮监听===============================================
11:01:20.102 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63967】准备好了数据  
11:01:20.102 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【8】次处理数据,收到的内容是: 63967==========>东科技大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:20.103 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【19】轮监听===============================================
11:01:20.103 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63963】准备好了数据  
11:01:20.103 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【9】次处理数据,收到的内容是: 63963==========>西南体育大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
11:01:20.105 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【20】轮监听===============================================
11:01:20.105 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63966】准备好了数据  
11:01:20.105 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【10】次处理数据,收到的内容是: 63966==========>北理工大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:23.093 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【21】轮监听===============================================
11:01:23.093 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63962】准备好了数据  
11:01:23.093 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【11】次处理数据,收到的内容是: 63962==========>中国艺术大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
11:01:23.094 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【22】轮监听===============================================
11:01:23.094 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63964】准备好了数据  
11:01:23.095 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【12】次处理数据,收到的内容是: 63964==========>北艺术大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:23.095 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【23】轮监听===============================================
11:01:23.095 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63961】准备好了数据  
11:01:23.096 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【13】次处理数据,收到的内容是: 63961==========>北体育大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:23.096 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【24】轮监听===============================================
11:01:23.096 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63958】准备好了数据  
11:01:23.096 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【14】次处理数据,收到的内容是: 63958==========>南农业大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:23.098 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【25】轮监听===============================================
11:01:23.098 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63959】准备好了数据  
11:01:23.098 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【15】次处理数据,收到的内容是: 63959==========>西艺术大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:23.103 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【26】轮监听===============================================
11:01:23.103 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63960】准备好了数据  
11:01:23.103 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【16】次处理数据,收到的内容是: 63960==========>南科技大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:23.103 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【27】轮监听===============================================
11:01:23.103 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63967】准备好了数据  
11:01:23.103 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【17】次处理数据,收到的内容是: 63967==========>南农业大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:23.104 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【28】轮监听===============================================
11:01:23.104 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63965】准备好了数据  
11:01:23.104 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【18】次处理数据,收到的内容是: 63965==========>西北技术大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
11:01:23.105 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【29】轮监听===============================================
11:01:23.105 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63963】准备好了数据  
11:01:23.105 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【19】次处理数据,收到的内容是: 63963==========>西科技大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:23.106 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【30】轮监听===============================================
11:01:23.106 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63966】准备好了数据  
11:01:23.106 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【20】次处理数据,收到的内容是: 63966==========>西经贸大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:26.094 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【31】轮监听===============================================
11:01:26.095 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63962】准备好了数据  
11:01:26.095 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【21】次处理数据,收到的内容是: 63962==========>东南科技大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
11:01:26.096 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【32】轮监听===============================================
11:01:26.096 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63964】准备好了数据  
11:01:26.097 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【22】次处理数据,收到的内容是: 63964==========>西南艺术大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
11:01:26.097 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【33】轮监听===============================================
11:01:26.097 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63961】准备好了数据  
11:01:26.097 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【23】次处理数据,收到的内容是: 63961==========>东南体育大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
11:01:26.098 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【34】轮监听===============================================
11:01:26.098 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63958】准备好了数据  
11:01:26.098 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【24】次处理数据,收到的内容是: 63958==========>南艺术大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:26.099 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【35】轮监听===============================================
11:01:26.100 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63959】准备好了数据  
11:01:26.100 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【25】次处理数据,收到的内容是: 63959==========>中国技术大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
11:01:26.104 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【36】轮监听===============================================
11:01:26.104 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63967】准备好了数据  
11:01:26.104 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【26】次处理数据,收到的内容是: 63967==========>北科技大学                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
11:01:26.105 [main] WARN com.vincent.fat.core.nio.server.NioServer - 第【37】轮监听===============================================
11:01:26.105 [main] INFO com.vincent.fat.core.nio.server.NioServer - Readable   客户端【/127.0.0.1:63960】准备好了数据  
11:01:26.105 [main] INFO com.vincent.fat.core.nio.server.NioServer - 第【27】次处理数据,收到的内容是: 63960==========>东北理工大学

客户端日志:

"C:\Program Files\Java\jdk1.8.0_221\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:63949,suspend=y,server=n -javaagent:C:\Users\wb-swz696586\AppData\Local\JetBrains\IntelliJIdea2020.1\captureAgent\debugger-agent.jar -Dfile.encoding=UTF-8 -classpath "D:\softs\IntelliJ IDEA 2019.3.4\lib\idea_rt.jar" com.intellij.rt.execution.CommandLineWrapper C:\Users\wb-swz696586\AppData\Local\Temp\idea_classpath1497081722 com.vincent.fat.core.nio.client.NioClient
Connected to the target VM, address: '127.0.0.1:63949', transport: 'socket'
11:01:19.846 [pool-1-thread-7] DEBUG com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - [/127.0.0.1:63958]完成连接
11:01:19.851 [pool-1-thread-2] DEBUG com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - [/127.0.0.1:63965]完成连接
11:01:19.849 [pool-1-thread-4] DEBUG com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - [/127.0.0.1:63959]完成连接
11:01:19.847 [pool-1-thread-6] DEBUG com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - [/127.0.0.1:63962]完成连接
11:01:19.848 [pool-1-thread-5] DEBUG com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - [/127.0.0.1:63960]完成连接
11:01:19.854 [pool-1-thread-3] DEBUG com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - [/127.0.0.1:63966]完成连接
11:01:19.848 [pool-1-thread-10] DEBUG com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - [/127.0.0.1:63961]完成连接
11:01:19.850 [pool-1-thread-1] DEBUG com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - [/127.0.0.1:63964]完成连接
11:01:19.848 [pool-1-thread-8] DEBUG com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - [/127.0.0.1:63963]完成连接
11:01:19.853 [pool-1-thread-9] DEBUG com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - [/127.0.0.1:63967]完成连接
11:01:20.092 [pool-1-thread-6] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63962]的第【1】条数据发送完成
11:01:20.092 [pool-1-thread-1] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63964]的第【2】条数据发送完成
11:01:20.095 [pool-1-thread-10] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63961]的第【3】条数据发送完成
11:01:20.095 [pool-1-thread-7] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63958]的第【4】条数据发送完成
11:01:20.097 [pool-1-thread-4] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63959]的第【5】条数据发送完成
11:01:20.100 [pool-1-thread-5] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63960]的第【6】条数据发送完成
11:01:20.101 [pool-1-thread-9] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63967]的第【7】条数据发送完成
11:01:20.103 [pool-1-thread-8] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63963]的第【9】条数据发送完成
11:01:20.102 [pool-1-thread-2] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63965]的第【8】条数据发送完成
11:01:20.105 [pool-1-thread-3] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63966]的第【10】条数据发送完成
11:01:23.092 [pool-1-thread-6] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:23.093 [pool-1-thread-6] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63962]的第【11】条数据发送完成
11:01:23.094 [pool-1-thread-1] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:23.094 [pool-1-thread-1] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63964]的第【12】条数据发送完成
11:01:23.095 [pool-1-thread-10] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:23.095 [pool-1-thread-10] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63961]的第【13】条数据发送完成
11:01:23.096 [pool-1-thread-7] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:23.096 [pool-1-thread-7] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63958]的第【14】条数据发送完成
11:01:23.097 [pool-1-thread-4] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:23.098 [pool-1-thread-4] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63959]的第【15】条数据发送完成
11:01:23.101 [pool-1-thread-5] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:23.102 [pool-1-thread-9] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:23.103 [pool-1-thread-5] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63960]的第【16】条数据发送完成
11:01:23.103 [pool-1-thread-9] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63967]的第【17】条数据发送完成
11:01:23.104 [pool-1-thread-8] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:23.104 [pool-1-thread-2] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:23.104 [pool-1-thread-8] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63963]的第【18】条数据发送完成
11:01:23.104 [pool-1-thread-2] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63965]的第【19】条数据发送完成
11:01:23.106 [pool-1-thread-3] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:23.106 [pool-1-thread-3] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63966]的第【20】条数据发送完成
11:01:26.094 [pool-1-thread-6] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:26.094 [pool-1-thread-6] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63962]的第【21】条数据发送完成
11:01:26.096 [pool-1-thread-1] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:26.096 [pool-1-thread-1] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63964]的第【22】条数据发送完成
11:01:26.097 [pool-1-thread-10] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:26.097 [pool-1-thread-7] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:26.097 [pool-1-thread-10] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63961]的第【23】条数据发送完成
11:01:26.097 [pool-1-thread-7] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63958]的第【24】条数据发送完成
11:01:26.099 [pool-1-thread-4] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:26.099 [pool-1-thread-4] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63959]的第【25】条数据发送完成
11:01:26.104 [pool-1-thread-5] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:26.104 [pool-1-thread-9] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:26.104 [pool-1-thread-5] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63960]的第【26】条数据发送完成
11:01:26.104 [pool-1-thread-9] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63967]的第【27】条数据发送完成
11:01:26.105 [pool-1-thread-2] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:26.105 [pool-1-thread-8] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:26.106 [pool-1-thread-2] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63965]的第【28】条数据发送完成
11:01:26.107 [pool-1-thread-8] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63963]的第【29】条数据发送完成
11:01:26.107 [pool-1-thread-3] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:26.110 [pool-1-thread-3] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63966]的第【30】条数据发送完成
11:01:29.095 [pool-1-thread-6] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:29.096 [pool-1-thread-6] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63962]的第【31】条数据发送完成
11:01:29.097 [pool-1-thread-1] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:29.098 [pool-1-thread-10] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:29.098 [pool-1-thread-7] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:29.098 [pool-1-thread-1] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63964]的第【32】条数据发送完成
11:01:29.099 [pool-1-thread-7] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63958]的第【33】条数据发送完成
11:01:29.100 [pool-1-thread-10] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63961]的第【34】条数据发送完成
11:01:29.101 [pool-1-thread-4] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:29.101 [pool-1-thread-4] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63959]的第【35】条数据发送完成
11:01:29.105 [pool-1-thread-9] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:29.105 [pool-1-thread-5] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:29.106 [pool-1-thread-9] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63967]的第【36】条数据发送完成
11:01:29.106 [pool-1-thread-5] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63960]的第【37】条数据发送完成
11:01:29.107 [pool-1-thread-2] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:29.108 [pool-1-thread-2] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63965]的第【38】条数据发送完成
11:01:29.108 [pool-1-thread-8] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:29.109 [pool-1-thread-8] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63963]的第【39】条数据发送完成
11:01:29.111 [pool-1-thread-3] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 收到的内容是: <>
11:01:29.112 [pool-1-thread-3] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 客户端[/127.0.0.1:63966]的第【40】条数据发送完成
11:01:29.823 [pool-1-thread-2] ERROR com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 端口为63965的客户端报错
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at java.lang.Thread.sleep(Thread.java:340)
    at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.doRequest(RequestRemoteServerWithTcp.java:70)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.run(RequestRemoteServerWithTcp.java:49)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
11:01:29.824 [pool-1-thread-6] ERROR com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 端口为63962的客户端报错
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at java.lang.Thread.sleep(Thread.java:340)
    at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.doRequest(RequestRemoteServerWithTcp.java:70)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.run(RequestRemoteServerWithTcp.java:49)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
11:01:29.826 [pool-1-thread-6] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 【63962】的输出通道关闭!
11:01:29.826 [pool-1-thread-10] ERROR com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 端口为63961的客户端报错
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at java.lang.Thread.sleep(Thread.java:340)
    at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.doRequest(RequestRemoteServerWithTcp.java:70)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.run(RequestRemoteServerWithTcp.java:49)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
11:01:29.827 [pool-1-thread-10] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 【63961】的输出通道关闭!
11:01:29.827 [pool-1-thread-7] ERROR com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 端口为63958的客户端报错
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at java.lang.Thread.sleep(Thread.java:340)
    at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.doRequest(RequestRemoteServerWithTcp.java:70)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.run(RequestRemoteServerWithTcp.java:49)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
11:01:29.828 [pool-1-thread-7] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 【63958】的输出通道关闭!
11:01:29.829 [pool-1-thread-3] ERROR com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 端口为63966的客户端报错
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at java.lang.Thread.sleep(Thread.java:340)
    at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.doRequest(RequestRemoteServerWithTcp.java:70)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.run(RequestRemoteServerWithTcp.java:49)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
11:01:29.831 [pool-1-thread-3] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 【63966】的输出通道关闭!
11:01:29.823 [pool-1-thread-4] ERROR com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 端口为63959的客户端报错
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at java.lang.Thread.sleep(Thread.java:340)
    at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.doRequest(RequestRemoteServerWithTcp.java:70)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.run(RequestRemoteServerWithTcp.java:49)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
11:01:29.832 [pool-1-thread-4] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 【63959】的输出通道关闭!
11:01:29.832 [pool-1-thread-8] ERROR com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 端口为63963的客户端报错
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at java.lang.Thread.sleep(Thread.java:340)
    at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.doRequest(RequestRemoteServerWithTcp.java:70)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.run(RequestRemoteServerWithTcp.java:49)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
11:01:29.833 [pool-1-thread-8] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 【63963】的输出通道关闭!
11:01:29.833 [pool-1-thread-5] ERROR com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 端口为63960的客户端报错
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at java.lang.Thread.sleep(Thread.java:340)
    at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.doRequest(RequestRemoteServerWithTcp.java:70)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.run(RequestRemoteServerWithTcp.java:49)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
11:01:29.835 [pool-1-thread-5] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 【63960】的输出通道关闭!
11:01:29.825 [pool-1-thread-2] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 【63965】的输出通道关闭!
11:01:29.837 [pool-1-thread-1] ERROR com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 端口为63964的客户端报错
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at java.lang.Thread.sleep(Thread.java:340)
    at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.doRequest(RequestRemoteServerWithTcp.java:70)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.run(RequestRemoteServerWithTcp.java:49)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
11:01:29.838 [pool-1-thread-1] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 【63964】的输出通道关闭!
11:01:29.845 [pool-1-thread-9] ERROR com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 端口为63967的客户端报错
java.lang.InterruptedException: sleep interrupted
    at java.lang.Thread.sleep(Native Method)
    at java.lang.Thread.sleep(Thread.java:340)
    at java.util.concurrent.TimeUnit.sleep(TimeUnit.java:386)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.doRequest(RequestRemoteServerWithTcp.java:70)
    at com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp.run(RequestRemoteServerWithTcp.java:49)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
    at java.util.concurrent.FutureTask.run(FutureTask.java)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
11:01:29.847 [pool-1-thread-9] INFO com.vincent.fat.core.nio.client.RequestRemoteServerWithTcp - 【63967】的输出通道关闭!
Disconnected from the target VM, address: '127.0.0.1:63949', transport: 'socket'

Process finished with exit code 0

  为了保持长连接,在客户端发送完一次数据以后socketChannel没有关闭,服务端接收完成一次数据以后socketChannel也没有关闭,这样再下次发送数据的时候可以直接发送。但是当客户端线程被中断以后,客户端关闭了sockeChannel,此时服务端没有相应的API判断客户端是否关闭了socket,导致selector在监听事件的时候会无限坚挺到readable()事件,导致CPU等资源大量浪费,系统崩溃。可以通过如下代码来判断客户端socket是否关闭:

int readBytes = 0;
                while ((readBytes=socketChannel.read(byteBuffer))>0) {
                    //处理数据
                    content.append(new String(byteBuffer.array(), StandardCharsets.UTF_8));
                    byteBuffer.clear();
                }
                //判断客户端断开连接
                //当客户端没有断开连接的时候readBytes=0这样保持长连接
                //当客户端断开连接的时候readBytes=-1
                if (readBytes<0)
                {
                    logger.debug("远程客户端【{}】断开连接.....",socketChannel.getRemoteAddress());
                    socketChannel.close();
                    selectionKey.cancel();
                }
                //处理数据
                else {
                    logger.info("第【{}】次处理数据,收到的内容是: {}",handleDataNo.incrementAndGet(),
                            content.toString());
                }
socketChannel.read()此函数返回客户端读取到的字节数,如果大于0 代表有数据读取到,如果=-1代表客户端关闭了连接,此时可以调用 selectionKey.cancel();取消此channel对相应selector的注册。从而避免无限循环的BUG。