ObjectOutputStream内部使用了自己的一些标记,比如名称/对象索引等,这些是不一定。
另外,对象重新构造,基本上只是保证hashCode和equals一样,其内容并不保证完全跟原来一样,这要看Serializable的具体实现。你对Object使用byte[]的完全比较是不正确的用法。

解决方案 »

  1.   

    server 和Client都是用的java,读写顺序应该java就可以完成了。照理不会是顺序的问题。我是在同一台机器上用运行的,所以机器不同的原因可以排除。
    我dump了一下传过来后object的byte[]内容,结果发现在client端把对象写成byte[]的时候与server端把对象写成byte[]的时候有一些区别,也就是有部分标记不相同。后来我又做了个测试。发现,如果是用 java.exe启动server 和 client,就没问题。而如果我在程序里调用jvm来启动,就出现这样的毛病。也就是,两端要么都是自己在程序中启动JVM进行处理,要么都是由java.exe来启动! 因为我做了个java启动的测试程序,所以发现毛病了。 可是两者的差别究竟在哪里,我还是不清楚!!!:(