需求如下
两个端口
其中一个端口需求如下
1、客户端连接服务器
2、只有服务器主动发送数据给客户端;是一问一答的过程;
3、客户端接收服务器的数据,才返回数据给服务器;
另一个端口需求如下
4、我服务器还接收另一个端口,只接受,不发送数据;
读取另一个端口没问题;但是设置定时主动发送数据给客户端,老是报错 java.io.IOException: 远程主机强迫关闭了一个现有的连接。怎么办啊?我用的是channelActive发送数据,定时2min发收都是没有问题的;如果定时10min就会报错,java.io.IOException: 远程主机强迫关闭了一个现有的连接。
两个端口
其中一个端口需求如下
1、客户端连接服务器
2、只有服务器主动发送数据给客户端;是一问一答的过程;
3、客户端接收服务器的数据,才返回数据给服务器;
另一个端口需求如下
4、我服务器还接收另一个端口,只接受,不发送数据;
读取另一个端口没问题;但是设置定时主动发送数据给客户端,老是报错 java.io.IOException: 远程主机强迫关闭了一个现有的连接。怎么办啊?我用的是channelActive发送数据,定时2min发收都是没有问题的;如果定时10min就会报错,java.io.IOException: 远程主机强迫关闭了一个现有的连接。
你查看一下netty的API有没有设置channel的idle时间之类的
https://github.com/reactor/reactor-netty/issues/612
客户端的channel通道加个 IdleStateHandler试试
看你的说明象是搞类似Iot终端设备, 一个命令通道,一个数据通道, 定时发送数据, 或者定时上报数据.
我觉得, 除了配置idle 之外, 你应该发送心跳来维护连接状态, 这个是设备通信的基本功能.
比如: 中国移动GPRS数据通信,他们的连接是维持 15分钟, 如果15分钟没有数据, 连接断开.
所以我们的程序是 每5分钟发送一个心跳报文, 表示连接在线. 这样一直会维护连接活动状态.