默认

MINA收到的数据转换成String时前几位乱码

查看数: 49728 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-02-26 13:54

正文摘要:

问题截图 服务端代码: 问题描述 client发送数据去到解码的doDecode方法中转换成string时,发现string前面几位是乱码,字节码分别是-84,-19,0,5,116,0,然后后面的却是正确的。 麻烦大神们看一下咯,我 ...

评论

IMDeveloper 发表于 8 年前
问题解决了吗,很是好奇
JackJiang 发表于 8 年前
我当时在用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源代码应该能找到原因。

我的问题跟你的现象差不多,但貌似场景不一样,仅供参考。
qq_26595291x 发表于 8 年前
人工置顶,谢谢大家。
qq_26595291x 发表于 8 年前
麻烦大家花点时间帮我看看,谢谢了
qq_26595291x 发表于 8 年前
引用:M_Kingsunx 发表于 2016-02-26 14:03
客户用的也是MINA的jar包吗

感谢关注,是的,客户端用的是MINA的jar包,参考的是官方的例子。
M_Kingsunx 发表于 8 年前
客户用的也是MINA的jar包吗

返回顶部