服务端是NioDatagramAcceptor,当有udp客户端发数据之后,1分钟之内如果客户端没有再发数据的话,mina就会断开这个session,然后调用sessionClosed方法,导致我服务端想在1分钟之后往客户端发送数据都没法发了,session.isConnected为false.我设置了idleTime,writeTimeout,BothIdleTime等等这些超时值但全都无效,只要客户端在1分钟之内没有再发数据的话,mina就会断开它,不知道这是什么原因,怎样才能不让mina断开客户端.
我的mina版本是m6的.
估计不是mina断的吧
有可能是客户端断的
一般长连接都会有心跳,防止长时间没有数据断开
######不是客户端断的,我同样的客户端连到socket udp工具上就不会被断开
######好象java nio是有些参数是不支持的
我还是建义做心跳吧
这样无论什么客户端什么服务器都没有这个问题
######加心跳机制确实可以解决了.
不过我奇怪我原来的客户端也是要手动发数据的,不会主动发心跳包.那些UDP工具他们是怎么保持连接的.
######而且我设置了idleTime,writeTimeout,BothIdleTime等等这些超时参数,但时间到了sessionIdle方法并没有被执行,不知道是不是mina的bug
######udp是无连接的,在udp通信中,服务端收到消息后,write到客户端后,就会关闭该对象,释放资源
######acceptor.setSessionRecycler(new ExpiringSessionRecycler(120));
120单位是秒
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。