mina怎么处理超时的

mina怎么处理超时的,第1张

分3段处理啊。 如果是留言方0面,一z般有两种情况,一s种是将超过的部分7列为1第二n个r人w留言的处理。另一b种则是将多出来的部分6省略掉。一u般情况下j,程序会提示5超过规定大o小l。而TCP。IP中8,他可不w是留言那么o简单,因为2你在留言的过程中7已k经超过规定的大j小r了n。一u般数据传输过程中1,最大m不u会超过66462大r小u的数据包,单位bit。这个n说来就话长2了k。举个s例子m,当我向服务器发送数据包的时候,将数据包分7成多个p段。第一a个u标识为62,第二y个j标识为18以3此类推。在最后一h个k数据包中5加上y一v个p标识,说明是这个t数据的结尾。 当传输过程中5,突然停止6了t传输,也f就是客户7端没有收到最后一x个f数据包,没有得到那个u标识,客户1端就会不n断地向服务器发送请求,直到超时,有点像我们玩游戏的时候突然断开l连接,会延迟一t样。最后丢弃。 2011-10-31 2:59:32

在使用MINA做客户端程序时,发现虽然调用了session.close()方法,通过日志也确实看到当前session已经被关闭了,但未什么客户端程序进程却没有停止呢?即MINA客户端没有根本的关闭。这个现象在版本1和2中都存在。这是MINA的bug吗???其实不然...

我们可以启动2个服务器端,然后用同一个connector实例来连接这2台服务器,通过结果可以发现2个连接是相互独立工作的,及connector和session不是一对一的。

通过查阅API和源代码,我们可以发现这里的connector实际是一个连接管理器,其内部通过一个connectQueue队列同步存储一个连接列表。并在调用connect()方法时,将当前连接请求注册到队列中;同时connector中启动着一个内部的Worker(工作线程)来管理这些连接。当我们关闭某个session之后,只是关闭了某个请求,工作线程其实并没有被关闭,所以出现程序没有停止的现象。

MINA1.1.7

可以通过设置工作超时来关闭连接,当所有的连接都被关闭后worker线程将停止,即connector停止。

Java代码

connector.setWorkerTimeout(1) //1秒钟(默认超时60秒)

PS:Worker定义在SocketConnector类中,内部直接实现管理

MINA2.0

可以调用connector的dispose()方法。该方法通过调用ExecutorService的shutdown()方法停止业务处理线程,并设置内部disposed标志位标识需要停止连接管理器;Worker线程通过该标识停止。

Java代码

connector.dispose()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12037593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存