分享一下我老师大神的人工智能教程!零基础,通俗易懂!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服务端报错 远程主机强迫关闭了一个现有的连接相关推荐

  1. Netty报错 远程主机强迫关闭了一个现有的连接 异常

    百度百科的描述 Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客 ...

  2. 循环报错: 远程主机强迫关闭了一个现有的连接

    客户端终止后,服务端一直循环 报java.io.IOException: 远程主机强迫关闭了一个现有的连接. 原始代码 private void read(SocketChannel channel, ...

  3. python 网络编程 socket 报错 ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

    服务端: # -*- coding: utf-8 -*- """ @File : 191226_基于UDP协议的socket_server端.py @Time : 201 ...

  4. python使用phantomJS循环for爬取多个页面时,解决内存持续变大而报错“ConnectionResetError: [WinError 10054]远程主机强迫关闭了一个现有的连接”的问题

    python使用phantomJS循环for爬取多个页面时,解决内存持续变大而报错"ConnectionResetError: [WinError 10054]远程主机强迫关闭了一个现有的连 ...

  5. tensorflow安装 报错ConnectionResetError(10054, ‘远程主机强迫关闭了一个现有的连接。

    @创建于:20210325 @修改于:20210325 文章目录 1.安装报错: 1.1 报错信息 1.2 解决办法 2.再次报错 2.1 报错信息 2.2 尝试办法(未成功) 2.3 尝试办法[成功 ...

  6. svn提交报错,Error running context: 远程主机强迫关闭了一个现有的连接

    今天用svn提交代码,一直报错! 报错信息: Commit failed (details follow): Error running context: 远程主机强迫关闭了一个现有的连接. 网上的方 ...

  7. torchvision.datasets.FashionMNIST报错[WinError 10054] 远程主机强迫关闭了一个现有的连接

    项目场景: 在李沐老师视频课Softmax 回归 + 损失函数 + 图片分类数据集[动手学深度学习v2]中用到了FashionMNIST数据集. 问题描述: trans = transforms.To ...

  8. java nio 强制关闭_Java NIO服务器:远程主机强迫关闭了一个现有的连接

    Java NIO聊天室 中,若客户端强制关闭,服务器会报"java.io.IOException: 远程主机强迫关闭了一个现有的连接.",并且服务器会在报错后停止运行,错误的意思就 ...

  9. SpringBoot整合Redis:java.io.IOException: 远程主机强迫关闭了一个现有的连接。或者控制台报连接超时异常

    场景: 项目启动过后 Redis 连接过一会就会断开,报如下问题: 问题1: 2022-12-05 23:05:18.287 ERROR 10752 --- [sson-netty-1-11] o.r ...

  10. netty 远程主机强迫关闭了一个现有的连接。

    如果你的netty报这个错误 java.io.IOException: 远程主机强迫关闭了一个现有的连接. 或者 System.Net.Sockets.SocketException (0x80004 ...

最新文章

  1. 深入浅出统计学(十一)总体和样本的估计
  2. CSS3 Animation(下)
  3. [译] Lenses:可组合函数式编程的 Getter 和 Setter(第十九部分)
  4. JSP+Javabean+Servlet实现用户注册
  5. nginx 499 502 413 404 处理
  6. springboot整合mysql5.7_详解SpringBoot整合MyBatis详细教程
  7. 【java笔记】网络编程概述
  8. 2021年SWPUACM暑假集训day2并查集算法
  9. What are the main differences between Derby.js and Meteor?
  10. CentOS 8配置阿里YUM源
  11. Anaconda安装教程
  12. Error:Execution failed for task ':app:compileDebugNdk'. Error: NDK integrat
  13. 【JAVA长虹键法】第五式 抽象工厂模式(23种设计模式)
  14. PyCharm打包可执行文件方法
  15. android背景气泡,仿Android微信消息气泡
  16. 计算机认识新朋友教案,幼儿园认识新朋友教案
  17. Win10下安装elasticsearch6.5.0
  18. LintCode Find the Duplicate Number
  19. Python练习14:天天向上的力量I
  20. 超低延迟传输网络架构在元宇宙场景的应用

热门文章

  1. CH Round #56 - 国庆节欢乐赛解题报告
  2. xna中的截屏操作处理
  3. 程序员的终极幻想(一):像操作数据库那样操作大脑的记忆
  4. 整洁数据 —tidytext(一)
  5. EF 操作数据库中的表
  6. Java开发笔记(六十三)双冒号标记的方法引用
  7. [CQOI2009][BZOJ1303] 中位数图
  8. DSP_Builder设计方法说明_SinWave
  9. 关键字值集合和IDictionary
  10. linux自建git仓库