需求如下
两个端口
其中一个端口需求如下
1、客户端连接服务器
2、只有服务器主动发送数据给客户端;是一问一答的过程;
3、客户端接收服务器的数据,才返回数据给服务器;
另一个端口需求如下
4、我服务器还接收另一个端口,只接受,不发送数据;
读取另一个端口没问题;但是设置定时主动发送数据给客户端,老是报错  java.io.IOException: 远程主机强迫关闭了一个现有的连接。怎么办啊?我用的是channelActive发送数据,定时2min发收都是没有问题的;如果定时10min就会报错,java.io.IOException: 远程主机强迫关闭了一个现有的连接。

解决方案 »

  1.   

    根据你描述的情况,感觉是你的channel超过了闲置时间,被自动close了
    你查看一下netty的API有没有设置channel的idle时间之类的
      

  2.   

    参考以下帖子
    https://github.com/reactor/reactor-netty/issues/612
    客户端的channel通道加个 IdleStateHandler试试
      

  3.   

    查看我的netty的demo
      

  4.   

    看楼主的博客,搞netty时间也不少了, 加油.
    看你的说明象是搞类似Iot终端设备, 一个命令通道,一个数据通道, 定时发送数据, 或者定时上报数据.
    我觉得, 除了配置idle 之外, 你应该发送心跳来维护连接状态, 这个是设备通信的基本功能.
    比如: 中国移动GPRS数据通信,他们的连接是维持 15分钟, 如果15分钟没有数据, 连接断开.
    所以我们的程序是 每5分钟发送一个心跳报文, 表示连接在线. 这样一直会维护连接活动状态.