服务器端是2003,开发的时候客户端也在03的系统上,现在把客户端装到XP上就出了问题。错误提示是:返序列化相关的错误,有无法将位于索引 66 处的字节 [FF] 由指定的代码页转换为 Unicode。正在试图对空流进行反序列化。在分析完成之前就遇到流结尾。这三种我测试了一下,返序列化错误时,一般是准备返序列化的数据为空或者不完整。如果这么分析,那就是socket收到的包不完整了(汗),但我的程序中,客户端己经在发送之前加了个我头为长度,服务器端也在接收完成之后才会继续执行其它操作,可不知道为什么,接收到的包会不完整呢?
我测试了N次,如果客户端是2003,从来不会报这样的错误。但一换成XP,就经常性的出现,检查客户端发送数据的代码又找不到BUG。服务器端也是一样,什么BUG也找不到,再说03下的客户端又正常,应该说明服务器端没有问题。请高人指点指点!上次的问题还没解决,这次又来一个顺便也把上次的问题贴上来吧,是关于remoting的,解决一个是一个吧,要不然我真的要疯了
http://topic.csdn.net/u/20081103/10/15cdabcd-8e8a-4d41-b70f-118e4121f063.html

解决方案 »

  1.   

    应该跟防火墙没有关系,因为客户端(XP)是在向服务器端(03)发送数据时,服务器收到的数据包经常不能正确的返序列化。而不是服务器端发送数据客户端收不到。我现在怀疑两点,第一,XP在序列化类的时候就出现错误,导致数据包内容跟本不正确,第二,就是XP向服务器发送数据时,把包弄丢或者坏掉了,因为在03系统下的客户端从没出过这样的问题。但我怀疑的问题又没有根据,只是我个人想法而已,所以也不知道从何处下手来解决。
      

  2.   

    你这个用了remoting么?
    我建议你采用排除的方法一步步来
    你找台xp机器,写一个console的测试程序,用你现在序列化数据的那段代码以及服务器端的反序列化代码,然后用你出错时测试的数据,来做一个测试,看是否有问题。如果没有问题,那就把序列化后的数据保存下来,拿到服务器上再做反序列化,看是否有问题。如果都没问题,那就把你通讯的代码拿出来,在不做序列化的情况下,进行测试。
    我相信bug的出现总归有原因的,所以不要猜测,通过测试,一点点排除掉可能的原因。应该能找的到的。
      

  3.   

    这个不是remoting 是socket的tmxk2002 谢谢您的帮助和鼓励!