我试图通过单个发送不同类的多个可序列化对象
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相同。ObjectInputStreamObjectOutputStream
您很可能错误地使用了 ObjectOutputStream 或 ObjectInputStream。
常见错误包括
顺便说一句:在使用 ObjectInputStream 之前,您应该始终先创建 ObjectOutputStream 并刷新()它。