java.io.IOException: 远程主机强迫关闭了一个现有的连接
程序员文章站
2022-04-24 10:29:18
...
摆脱烦恼最有效的是慢思考,为什么和我想的不一样,出入在哪里,什么导致的?
疑惑
我使用netty框架接受数据,每隔半个小时存储数据,运行不到三个小时报错
java.io.IOException: 远程主机强迫关闭了一个现有的连接
java.io.IOException: 远程主机强迫关闭了一个现有的连接。
at sun.nio.ch.SocketDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(Unknown Source)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
at sun.nio.ch.IOUtil.read(Unknown Source)
at sun.nio.ch.SocketChannelImpl.read(Unknown Source)
解惑
主要原因是客户端强制关闭了连接(没有调用SocketChannel的close方法),服务端还在read事件中,此时读取客户端的信息时会报错。
代码不够健壮导致的;
//获取此key对应的套接字通道
SocketChannel channel = (SocketChannel) key.channel();
//创建一个大小为1024k的缓存区
ByteBuffer buffer = ByteBuffer.allocate(1024);
StringBuffer sb = new StringBuffer();
//将通道的数据读到缓存区
int count = 0;
try{
count = channel.read(buffer);
}catch(IOException e){
key.cancel();
channel.socket().close();
channel.close();
return;
}
推荐阅读
-
Python中使用pip安装库时提示:远程主机强迫关闭了一个现有的连接
-
Adb connection Error:远程主机强迫关闭了一个现有的连接
-
Adb connection Error:远程主机强迫关闭了一个现有的连接
-
Python中使用pip安装库时提示:远程主机强迫关闭了一个现有的连接
-
关于java.io.IOException: 远程主机强迫关闭了一个现有的连接问题解决
-
[Redis] 解决 java.io.IOException: 远程主机强迫关闭了一个现有的连接
-
Netty学习4—NIO服务端报错 远程主机强迫关闭了一个现有的连接
-
elasticsearch java.io.IOException: 远程主机强迫关闭了一个现有的连接。
-
使用Redisson与SpringBoot时出现java.io.IOException: 远程主机强迫关闭了一个现有的连接异常
-
解决springboot2整合Redis 后某个接口报错 java.io.IOException: 远程主机强迫关闭了一个现有的连接