如果我在服务器端,给流里面连续写两个对象,如下:
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream);
oos.writeObject(user);//user不为空
oos.writeObject(command);//command不为空
那么我在客户端用
                 ois.readObject();
读一个对象时,始终读不到第二个,该怎么做?

解决方案 »

  1.   

    我是在线程里来读的,而且那些对象都实现了Serializable接口的
      

  2.   

    没说清楚,你是发送了两个不同的对象,还是把一个对象修改了两次并发送它两次。如果是第二种情况我也碰到过,原因是 Java 为了防止一个对象因为被引用多次而发送多次的情况(比如:a.getPrevious().getNext() 是这个对象自己时是可能发送两次 a)而设置标记,已经发送过的发送第二次时会跟上次完全相同,因为它认为是同一个对象,因为它的对象标识相同。解决问题的办法是 ObjectOutputStream.reset().复位一下就正常了,它表示一个对象发送完毕了。
      

  3.   

    楼上回答对我这菜鸟太有用了,解决了我和楼主同样的问题,一下就不卡壳了。我reset()一下果然就正常了。谢谢humanity
      

  4.   

    顶,真解决问题啊,绝对的专业,就是个RESETjava真够SA的,老老实实传送不就得了,擦。
      

  5.   

    浪费我一天设置断点,查看是否类复制出问题,日JAVA的开发者,真是鬼子脑袋