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

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值