MINA客户端接收响应信息时出现不完整现象

发布于 2021-11-17 16:44:10 字数 239 浏览 988 评论 8

在一个金融项目中采用MINA开发一套转换系统,但遇到一个问题。问题是这样的,在客户端向服务器端发起请求,服务端是别家公司的系统,返回的结果报文有点大,这时在MINA客户端接收报文时,总是出现数据接收不完整的现象。由于各种原因没能解决这个问题。还请哪位MINA达人给指点迷津。测试观察发现,在接收响应报文时总是先接收一个2048,然后,在接收剩余的报文,但接收的过程中会出现接收不完整的现象,由于报文是XML的格式,dom4j来解析XML报文不完整就出现异常了。在此先谢谢各位了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

躲猫猫 2021-11-17 23:15:32

这样做于公于私都是有好处的!自己学了知识,同时公司也少了些麻烦!

葬花如无物 2021-11-17 23:14:26

嗯,貌似你这个比我做的要负责点!

屌丝范 2021-11-17 23:08:10

请教,我在使用了CumulativeProtocolDecoder的派生子类处理了报文,后续的处理也在这个类里,会不会对这个类的代码造成污染,而不纯粹是一个解码类了。如果不在这里完成后续跳出该怎么得到具体的报文呢?谢谢!

简单气质女生网名 2021-11-17 22:43:17

在decoder中处理,还是在hander中处理message,是你的设计问题了,跟mina就没啥关系了~

哑剧 2021-11-17 22:19:38

在WINXp环境测试是可以收完整的报文信息,但是把程序放到测试环境服务器(SUSE-Linux)上就会的不到完整报文了呢?还请指点一二。

彼岸花ソ最美的依靠 2021-11-17 22:18:02

回复
@悠然居士 : 大神你的问题怎么解决的啊我接收的信息也不完整

岁月打碎记忆 2021-11-17 21:00:43

回复
已经过去很久了,就当是的问题记忆也不是很清晰了。单从问题上讲就是拆包、粘包问题,在报文前加上一个长度,在服务端Decoder解析的时候先读取固定位数的长度,然后再读取这个长度的消息。把多余的或者不够本次处理的搁置,待接收完整后再做处理,可以根据业务逻辑具体实现等待、或是抛弃。不知道能否帮到你供参考。

能否归途做我良人 2021-11-17 19:52:34

用累积协议解码器(CumulativeProtocolDecoder)作为基类派生子类处理报文,接收完整再切断缓冲区,就不会出现这样的问题了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文