mina udp服务端,老是会在1分钟的时候主动断开客户端是什么原因

蒋洪冰 发布于 2009/08/06 22:04
阅读 5K+
收藏 1

服务端是NioDatagramAcceptor,当有udp客户端发数据之后,1分钟之内如果客户端没有再发数据的话,mina就会断开这个session,然后调用sessionClosed方法,导致我服务端想在1分钟之后往客户端发送数据都没法发了,session.isConnected为false.我设置了idleTime,writeTimeout,BothIdleTime等等这些超时值但全都无效,只要客户端在1分钟之内没有再发数据的话,mina就会断开它,不知道这是什么原因,怎样才能不让mina断开客户端.

我的mina版本是m6的.

加载中
0
JavaGG
JavaGG

估计不是mina断的吧

有可能是客户端断的

一般长连接都会有心跳,防止长时间没有数据断开

0
蒋洪冰

不是客户端断的,我同样的客户端连到socket udp工具上就不会被断开

0
JavaGG
JavaGG

好象java nio是有些参数是不支持的

我还是建义做心跳吧

这样无论什么客户端什么服务器都没有这个问题

0
蒋洪冰

加心跳机制确实可以解决了.

不过我奇怪我原来的客户端也是要手动发数据的,不会主动发心跳包.那些UDP工具他们是怎么保持连接的.

0
蒋洪冰

而且我设置了idleTime,writeTimeout,BothIdleTime等等这些超时参数,但时间到了sessionIdle方法并没有被执行,不知道是不是mina的bug

0
软件玩家

udp是无连接的,在udp通信中,服务端收到消息后,write到客户端后,就会关闭该对象,释放资源

0
jiushi147
jiushi147

acceptor.setSessionRecycler(new ExpiringSessionRecycler(120));

120单位是秒

返回顶部
顶部