MINA2搭建的SOCKET服务器收到数据抛出异常:MalformedInputException

使用MINA2.0.9搭建的SOCKET服务器,最近在线上一直抛异常:

org.apache.mina.filter.codec.ProtocolDecoderException: java.nio.charset.MalformedInputException: Input length = 1 (Hexdump: FF FF F5 41 4C 49 56 45 0D 0A 7B 22 72 65 71 75 65 73 74 43 6D 64 54 79 70 65 22 3A 31 33 2C 22 73 65 71 22 3A 33 31 2C 22 74 6F 74 61 6C 43 6F 75 6E 74 22 3A 34 2C 22 6F 70 65 72 53 74 65 70)

开始我通过改变服务器编码,使用SocketTool测试,在传递中文给服务器的时候,可以模拟出这个问题,以为是编码问题导致的,后来各种找解决方案,完全没有头绪。

在网上各种搜之后,我发现其实走偏了...

根本原因是服务器解码的时候的问题(http://blog.csdn.net/hepeng19861212/article/details/4457023):

中文字符一般占3个或者4个字节,当我们没有把某个字符的字节全部取来就去解码,肯定会出问题的,所以最根本的解决方案是服务器粘包,将所有的字节全部取来后再去解码。

具体实现我还没有去看,也还在深入学习中。

你可能感兴趣的:(java,Mina,粘包)