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