安卓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. 在服务器端和客户端传递的对象所在的包、且类名等最好一致,(这个是最坑爹的,当我发现是这个原因时整个人都不好了)否则可能出现如下异常:

扫描二维码关注公众号,回复: 524707 查看本文章

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

 

 

猜你喜欢

转载自614990713.iteye.com/blog/2162760