Netty学习4—NIO服务端报错 远程主机强迫关闭了一个现有的连接
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
1 发现问题
NIO编程中服务端会出现报错
Exception in thread "main" java.io.IOException: 远程主机强迫关闭了一个现有的连接。 at sun.nio.ch.SocketDispatcher.read0(Native Method) at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:25) at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233) at sun.nio.ch.IOUtil.read(IOUtil.java:206) at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:207) at com.rb.socket.nio.server.n.NIOServer.handleKey(NIOServer.java:87) at com.rb.socket.nio.server.n.NIOServer.listen(NIOServer.java:57) at com.rb.socket.nio.server.n.NIOServer.main(NIOServer.java:122)
主要原因是客户端强制关闭了连接(没有调用SocketChannel的close方法),服务端还在read事件中,此时读取客户端的信息时会报错。
2 解决问题
服务器读取事件增强健壮性:
public void handelerRead(SelectionKey key) throws IOException { // 服务器可读取消息:得到事件发生的Socket通道 SocketChannel channel = (SocketChannel) key.channel(); // 创建读取的缓冲区 ByteBuffer buffer = ByteBuffer.allocate(1024); int read = channel.read(buffer); if (read > 0) { byte[] data = buffer.array(); String msg = new String(data).trim(); System.out.println("服务端收到信息:" + msg); // 回写数据, 将消息回送给客户端 ByteBuffer outBuffer = ByteBuffer.wrap("好的".getBytes()); channel.write(outBuffer); } else { System.out.println("客户端关闭"); key.cancel(); } }
原贴地址:http://www.myexception.cn/program/1059786.html
给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
Netty学习4—NIO服务端报错 远程主机强迫关闭了一个现有的连接相关推荐
- Netty报错 远程主机强迫关闭了一个现有的连接 异常
百度百科的描述 Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客 ...
- 循环报错: 远程主机强迫关闭了一个现有的连接
客户端终止后,服务端一直循环 报java.io.IOException: 远程主机强迫关闭了一个现有的连接. 原始代码 private void read(SocketChannel channel, ...
- python 网络编程 socket 报错 ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
服务端: # -*- coding: utf-8 -*- """ @File : 191226_基于UDP协议的socket_server端.py @Time : 201 ...
- python使用phantomJS循环for爬取多个页面时,解决内存持续变大而报错“ConnectionResetError: [WinError 10054]远程主机强迫关闭了一个现有的连接”的问题
python使用phantomJS循环for爬取多个页面时,解决内存持续变大而报错"ConnectionResetError: [WinError 10054]远程主机强迫关闭了一个现有的连 ...
- tensorflow安装 报错ConnectionResetError(10054, ‘远程主机强迫关闭了一个现有的连接。
@创建于:20210325 @修改于:20210325 文章目录 1.安装报错: 1.1 报错信息 1.2 解决办法 2.再次报错 2.1 报错信息 2.2 尝试办法(未成功) 2.3 尝试办法[成功 ...
- svn提交报错,Error running context: 远程主机强迫关闭了一个现有的连接
今天用svn提交代码,一直报错! 报错信息: Commit failed (details follow): Error running context: 远程主机强迫关闭了一个现有的连接. 网上的方 ...
- torchvision.datasets.FashionMNIST报错[WinError 10054] 远程主机强迫关闭了一个现有的连接
项目场景: 在李沐老师视频课Softmax 回归 + 损失函数 + 图片分类数据集[动手学深度学习v2]中用到了FashionMNIST数据集. 问题描述: trans = transforms.To ...
- java nio 强制关闭_Java NIO服务器:远程主机强迫关闭了一个现有的连接
Java NIO聊天室 中,若客户端强制关闭,服务器会报"java.io.IOException: 远程主机强迫关闭了一个现有的连接.",并且服务器会在报错后停止运行,错误的意思就 ...
- SpringBoot整合Redis:java.io.IOException: 远程主机强迫关闭了一个现有的连接。或者控制台报连接超时异常
场景: 项目启动过后 Redis 连接过一会就会断开,报如下问题: 问题1: 2022-12-05 23:05:18.287 ERROR 10752 --- [sson-netty-1-11] o.r ...
- netty 远程主机强迫关闭了一个现有的连接。
如果你的netty报这个错误 java.io.IOException: 远程主机强迫关闭了一个现有的连接. 或者 System.Net.Sockets.SocketException (0x80004 ...
最新文章
- 深入浅出统计学(十一)总体和样本的估计
- CSS3 Animation(下)
- [译] Lenses:可组合函数式编程的 Getter 和 Setter(第十九部分)
- JSP+Javabean+Servlet实现用户注册
- nginx 499 502 413 404 处理
- springboot整合mysql5.7_详解SpringBoot整合MyBatis详细教程
- 【java笔记】网络编程概述
- 2021年SWPUACM暑假集训day2并查集算法
- What are the main differences between Derby.js and Meteor?
- CentOS 8配置阿里YUM源
- Anaconda安装教程
- Error:Execution failed for task ':app:compileDebugNdk'. Error: NDK integrat
- 【JAVA长虹键法】第五式 抽象工厂模式(23种设计模式)
- PyCharm打包可执行文件方法
- android背景气泡,仿Android微信消息气泡
- 计算机认识新朋友教案,幼儿园认识新朋友教案
- Win10下安装elasticsearch6.5.0
- LintCode Find the Duplicate Number
- Python练习14:天天向上的力量I
- 超低延迟传输网络架构在元宇宙场景的应用