读书人

SNMP4J包 TCP-讯息发送时的一个BUG

发布时间: 2013-01-18 10:22:42 作者: rapoo

SNMP4J包 TCP-消息发送时的一个BUG

在实际使用中,发现这样的一个问题,客户端(工业级交换机)和本地服务端的连接总是中断,当然不是超时自动清理的。

这个中断,有时可以建立上并能正常使用,有时连接上了却不正常使用这个连接。后台日志打印,明明连接已经存在却一直报错说是通道已经关闭。

?

经过多次测试和断点跟踪,发现交换机在一定时间不实用的话就认定连接中断,马上进行连接重建,而此时如果服务端正在给客户端发送消息,就会在一定几率上造成连接建立却无法继续使用的情况。

发生这种情况时,会一直在某个地方报错连接通道已经关闭,DefaultTcpTransportMapping 内部类 ServerThread?的 processPending 方法:

// TODO 如果本地不是服务端,则创建连接再发送if (!serverEnabled) {

?

如果你的消息都是当成服务端去发送了,那么这个连接一旦建立成功,且此时程序还在处理中,那么消息照样是发送成功的!

?

请您到ITEYE网站看原创,谢谢!

http://cuisuqiang.iteye.com/?!?

读书人网 >编程

热点推荐