我试图通过单个发送不同类的多个可序列化对象
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
但是,我总是得到一个
java.io.StreamCorruptedException:无效类型代码:AC
我已经通过论坛并尝试过out.reset()
,但它似乎不起作用。我做错了什么或错过了什么?
请帮忙
我试图通过单个发送不同类的多个可序列化对象
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
但是,我总是得到一个
java.io.StreamCorruptedException:无效类型代码:AC
我已经通过论坛并尝试过out.reset()
,但它似乎不起作用。我做错了什么或错过了什么?
请帮忙
损坏的是流,而不是ObjectOutputStream
. 那是一个类的名称。
ObjectOutputStreams
当您尝试使用单个读取多个结果时会出现此问题ObjectInputStream
。这是无效的。ObjectOutputStream
写一个以 - 开头的标题 - 你猜怎么着?0xAC。因此,当您使用 singleObjectInputStream
读取由 multiple 创建的流时ObjectOutputStreams
,它会发现意外的 0xAC 并抛出该异常。
解决方案:不要那样做。您不能将多个附加ObjectOutputStreams
到文件,也不能ObjectOutputStreams
在套接字上使用多个,除非您具有足够的协调能力,可以在流中最后一个停止ObjectInputStream
的精确点创建一个新的:相反,您必须使用和插座的使用寿命ObjectOutputStream
相同。ObjectInputStream
ObjectOutputStream
您很可能错误地使用了 ObjectOutputStream 或 ObjectInputStream。
常见错误包括
顺便说一句:在使用 ObjectInputStream 之前,您应该始终先创建 ObjectOutputStream 并刷新()它。