java nio 疑问
发布网友
发布时间:2022-05-18 08:28
我来回答
共1个回答
热心网友
时间:2023-10-12 10:18
主要原因是:客户端自己关闭了连接(没有调用SocketChannel的close方法),服务器还在read事件中,这个时候读取客户端的时候会报错。
解决办法,在客户端合适的时候,调用SocketChannel的close方法,同时服务器读取事件增加如下逻辑:
count = client.read(receivebuffer);
if(count==-1){
System.out.println(count);
client.close();
} else {
如果服务器没有client.close,则一直System.out.println(count)
所以先客户端调用close,然后服务器在read事件里面读取返回是不是-1,如果是,调用服务器这边客户端的引用的close方法,这样两边的SocketChannel都关闭了。
希望能够帮助到你,望采纳!