标签:java io 输出流 ted object 报错 output lag 多个 close
Java的序列化和ObjectStream真是一个大坑。。
先不说多线程环境下的问题,在单线程里,一个Socket只能保持一个ObjectOutputStream,原因好像是在于ObjectOutputStream有锁机制或是阻塞之类的东西,否则会导致接受方出现”StreamCorruptedException : invalid type code AC“,同理ObjectInputStream也只能保持一个,否则接收方会出现header错误的相关异常。
据说原因是ObjectOutputStream在构造的时候即new一个出来的时候,就会给输出流的开头添加几个用于表示序列化对象开头的字节,多次的new而不close就会导致流里面有多个表示开头的地方,接收方就会报错。
顿时感觉Java IO真是一块大头,可能会比Net和Thread两座大山更大,等以后有缘分看完API的源码,我就回来再填吧(flag
Java踩坑笔记:ObjectIOStream与IOStream的各种装饰器(先挖个坑,以后再来详细填)
标签:java io 输出流 ted object 报错 output lag 多个 close
原文地址:http://www.cnblogs.com/shing0315/p/7191101.html