默认
发表评论 6
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
MINA收到的数据转换成String时前几位乱码
阅读(45664) | 评论(6 收藏 淘帖
5金币

问题截图


服务端代码:
MINA收到的数据转换成String时前几位乱码_1450797919_873871.png

客户端代码:
MINA收到的数据转换成String时前几位乱码_1450797977_25013.png

数据乱码截图:
MINA收到的数据转换成String时前几位乱码_1450798117_247899.png

问题描述


client发送数据去到解码的doDecode方法中转换成string时,发现string前面几位是乱码,字节码分别是-84,-19,0,5,116,0,然后后面的却是正确的。

麻烦大神们看一下咯,我已经想了挺久的,才来问大家的。

现在这个解码的方法应该是不回错的了,我想有可能是我发送端出错了,不知道是不是呢?是的话,可以指出哪里么?谢谢。
本人才疏学浅请大神们不吝赐教!!!!!!!!

下一篇:MINA客户端通过TCP协议接收的数据不完整问题
推荐方案
评论 6
客户用的也是MINA的jar包吗
引用:M_Kingsunx 发表于 2016-02-26 14:03
客户用的也是MINA的jar包吗

感谢关注,是的,客户端用的是MINA的jar包,参考的是官方的例子。
麻烦大家花点时间帮我看看,谢谢了
人工置顶,谢谢大家。
我当时在用MINA写即时通讯框架 MobileIMSDK 时遇到过的类似问题。
我的问题是服务端向客户端发送的内容里,客户端解码后出现4个字节的乱码。
当时的原因是:客户端如果用官方的jar包实现的话,就不会乱码,而不用官方jar,直接用
标准的socket去实现却会出现乱码。

出现问题时服务端向客户端写数据的代码是这样的:
IoBuffer buf = IoBuffer.allocate(res.length);  
buf.setAutoExpand(true);  
buf.putInt(res.length);
buf.put(res);  
buf.flip();
buf.shrink();
// 向客户端写数据
WriteFuture future = session.write(buf);  
这段代码在网上或官方的demo里很常见,多数都是这么写的,但是我的客户端会出现乱码。

我的解决方法是,服务端向客户端写数据的代码改为下面的方式,问题解决:
IoBuffer buf = IoBuffer.wrap(res);  
// 向客户端写数据
WriteFuture future = session.write(buf);  

我分析,可能出问题的那段代码里,MINA的实现进行一些非标准封装导致,但这只是猜想,有机会看看MINA源代码应该能找到原因。

我的问题跟你的现象差不多,但貌似场景不一样,仅供参考。
签名: 《B站千万级长连接实时消息系统的架构设计与实践》http://www.52im.net/thread-4647-1-1.html
问题解决了吗,很是好奇
签名: 国庆长假还没有缓过来,请让我静一静,产品狗死远点...
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部