本篇文章主要介绍了"安卓mina通信需要注意的地方",对于Android开发感兴趣的同学可以参考一下:
?1.首先是客户端和服务端的过滤器要一致,此问题容易导致异常:java.nio.charset.MalformedInputException //创建接受数据...
?1.首先是客户端和服务端的过滤器要一致,此问题容易导致异常:
java.nio.charset.MalformedInputException
//创建接受数据的过滤器
DefaultIoFilterChainBuilder chain = connector.getFilterChain();
//设定这个过滤器将一行一行(/r/n)的读取数据
chain.addLast("myChin", new ProtocolCodecFilter(new TextLineCodecFactory()));
//这个是传递字符串用的解码器,屏蔽掉
chain.addLast("codec",new ProtocolCodecFilter(new ObjectSerializationCodecFactory())); //这个才是mina传递对象的解码器
2.要传递的对象在客户端和服务端要传递的类都要实现接java.io.Serializable;如果这个对象内部引用2了其他类,那么这个“其他类”
也是要实现java.io.Serializable接口的,否则容易产生java.io.NotSerializableException:
public class MsgObject implements Serializable {...}
3. 在服务器端和客户端传递的对象所在的包、且类名等最好一致,(这个是最坑爹的,当我发现是这个原因时整个人都不好了)否则可能出现如下异常:
org.apache.mina.core.buffer.BufferDataException: java.io.InvalidClassException:
failed to read class descriptor (Hexdump: 00 00 00 3C AC ED 00 05 73 72 01 00 22 63
6F 6D 2E 65 78 61 6D 70 6C 65 2E 73 65 6C 66 73 74 61 72 74 69 6E 67 2E 4D 73 67 4F
62 6A 65 63 74 78 70 00 00 00 01 74 00 08 48 69 6D 69 77 77 77 77)
?4.最后别忘了在安卓客户端配置文件里加网络访问权限啊
< uses-permission android:name ="android.permission.INTERNET" />
以上就介绍了安卓mina通信需要注意的地方,包括了方面的内容,希望对Android开发有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_96789.html