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