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:)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:)
at sun.nio.ch.IOUtil.read(IOUtil.java:)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:)
at com.rb.socket.nio.server.n.NIOServer.handleKey(NIOServer.java:)
at com.rb.socket.nio.server.n.NIOServer.listen(NIOServer.java:)
at com.rb.socket.nio.server.n.NIOServer.main(NIOServer.java:)

主要原因是客户端强制关闭了连接(没有调用SocketChannel的close方法),服务端还在read事件中,此时读取客户端的信息时会报错

2 解决问题

服务器读取事件增强健壮性:

public void handelerRead(SelectionKey key) throws IOException {
// 服务器可读取消息:得到事件发生的Socket通道
SocketChannel channel = (SocketChannel) key.channel();
// 创建读取的缓冲区
ByteBuffer buffer = ByteBuffer.allocate();
int read = channel.read(buffer);
if (read > ) {
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

Netty学习4—NIO服务端报错:远程主机强迫关闭了一个现有的连接的更多相关文章

  1. eclipse连接远程Hadoop报错,Caused by: java.io.IOException: 远程主机强迫关闭了一个现有的连接。

    eclipse连接远程Hadoop报错,Caused by: java.io.IOException: 远程主机强迫关闭了一个现有的连接.全部报错信息如下: Exception in thread & ...

  2. selenium webdriver报错 ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

    昨天跑的好好的代码,今天突然报错: ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接. 调查一下,原来是Chrome自动升级,而chrom ...

  3. tcp nio 远程主机强迫关闭了一个现有的连接

    import java.io.IOException; import java.net.InetSocketAddress; import java.net.ServerSocket; import ...

  4. 客户端(springmvc)调用netty构建的nio服务端,获得响应后返回页面(同步响应)

    后面考虑通过netty做一个真正意义的简约版RPC框架,今天先尝试通过正常调用逻辑调用netty构建的nio服务端并同步获得返回信息.为后面做铺垫 服务端实现 我们先完成服务端的逻辑,逻辑很简单,把客 ...

  5. 关于Eureka客户端连接服务端报错问题Cannot execute request on any known server

    对于Eureka包这个错误问题:Cannot execute request on any known server,总的原因就是连接Eureka连接服务端的Url地址不对,Url地址不对很很多情况. ...

  6. XE10 clientDataset 访问 DataSnap 服务端报错问题,锲而不舍找方法,终于解决了

    1. 开发环境说明:win 10 下安装了XE10.2和Delphi7 2.按照网上datasnap 三层与使用xe10 自带的samples 的例子,访问数据库都要报莫名的地址错误,这个太不人性化: ...

  7. Netty入门——客户端与服务端通信

    Netty简介Netty是一个基于JAVA NIO 类库的异步通信框架,它的架构特点是:异步非阻塞.基于事件驱动.高性能.高可靠性和高可定制性.换句话说,Netty是一个NIO框架,使用它可以简单快速 ...

  8. Netty源码解析---服务端启动

    Netty源码解析---服务端启动 一个简单的服务端代码: public class SimpleServer { public static void main(String[] args) { N ...

  9. Vue学习笔记-vue-element-admin 按装报错再按装

    一  使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7  (Windows x86- ...

随机推荐

  1. adduser Ubuntu添加sudo用户

    第一种方法: 添加sudo用户 当你安装Ubuntu的时候,它会自动添加第一个用户到sudo组,允许这个用户通过键入其自身帐户密码来获得超级用户(root)身份.然而,系统不会再自动添加其他的用户到s ...

  2. Android几个比较有用的插件

    1.Android  Drawable Importer 2.Android ButterKnife Zelezny 使用方法,在SetContentView上右键,Generate 3.Androi ...

  3. Python3快速入门

    ——<趣学Python-教孩子学编程>学习笔记 1.注释 (1)单行注释以  #  开头注释 # 这是一个注释 print("Hello, World!") (2)多行 ...

  4. 建立一个漂亮的PHP验证码类文件及调用方式

    //验证码类class ValidateCode { private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';/ ...

  5. web渗透测试基本步骤

       基本常见步骤: 一 .信息收集 要检测一个站首先应先收集信息如whois信息.网站真实IP.旁注.C段网站.服务器系统版本.容器版本.程序版本.数据库类型.二级域名.防火墙.维护者信息有哪些等等 ...

  6. Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Initialization)

    声明:所有内容来自coursera,作为个人学习笔记记录在这里. Initialization Welcome to the first assignment of "Improving D ...

  7. VMWare14 安装Mac OS系统(图解)

    ★ 背景 瞅了瞅自己干瘪的钱包,没忍心入手期待已久的 macPro,只好在虚拟机里玩一下 mac好了,等以后钱包傲气的时候再来个真实的. 安装环境: windows10 VMWare14.2 一.准备 ...

  8. jira安装插件svn

    1.登录jira 2.设置-插件-查找新插件 搜索 Jira Subversion plugin 3.安装成功之后 4.关联svn仓库 5.关联成功

  9. 【CentOS】JDK的安装

    FTP文件上传方式(推荐) # 解压 tar zxvf jdk-9_linux-x64_bin.tar.gz # 修改profile文件 sudo vi /etc/profile # 在文件结尾添加如 ...

  10. 主线程中的Looper.loop()一直无限循环为什么不会造成ANR

    待归纳 https://www.jianshu.com/p/cfe50b8b0a41 https://blog.csdn.net/cjh94520/article/details/71022883 那 ...