当前位置: 代码迷 >> Android >> 安卓mina通讯注意咯
  详细解决方案

安卓mina通讯注意咯

热度:83   发布时间:2016-04-28 03:36:48.0
安卓mina通信注意咯

?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" />

?

?