默认
发表评论 6
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
我当时在用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源代码应该能找到原因。

我的问题跟你的现象差不多,但貌似场景不一样,仅供参考。
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部