我想在 Android 手机上编写一个客户端并将对象发送到在我的 Windows PC 上运行的服务器(使用 ObjectDecoderInputStream ),但是有这些异常
异常
java.io.StreamCorruptedException: unexpected end of block data
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.access$300(Unknown Source)
at java.io.ObjectInputStream$GetFieldImpl.readFields(Unknown Source)
at java.io.ObjectInputStream.readFields(Unknown Source)
at java.net.InetSocketAddress.readObject(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at org.jboss.netty.handler.codec.serialization.ObjectDecoderInputStream.readObject(ObjectDecoderInputStream.java:115)
at MainActivity.main(MainActivity.java:30)
但是当我在我的手机上使用 CompatibleObjectEncoder/Decoder 并在我的 PC 上使用 ObjectInputStream 时,它工作正常。如果我将 android 代码更改为 Java 代码,并在我的 PC 上运行客户端以使用 ObjectEncoder 及其相关的 InputStream 向我自己发送对象,它工作正常。
顺便说一句,我使用 netty 3.6.3 final,我的 android 设备是 2.3.7 gingerbread(使用 jre 1.5 或 1.6),我的 PC 是 jre 1.7,这会是个问题吗?
最佳答案
听起来与我的问题相似 here - 我从来没有深入了解它,但是更改 JVM 使两端运行相同的版本停止了错误
关于android - Android 上的 Netty ObjectEncoders/ObjectDecoders 导致 StreamCorruptedException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15380344/