问题是这样的,我用Socket(TCP的)不间断地发送图,一般一张图的大小是700KB左右(不是确定的大小),然后发现在收的时候用NetStream.Read()方法时因为要指定接收的字节数,导致有的时候只收到半张图,有的时候却又会收到一张多的图,乱到最后就出错了。
现在我是这样办的,第次发图时,SERVER端先发送一个参数说明要发的字节数,CLIENT端作好收那么多字节的准备,并发送一个答复给SERVER端,SERVER端收到答复后发送图,CLIENT端收到后再发一个答复,SERVER端收到答复后继续发送将要发的字节数……如此反复。
但是这样一来性能很成问题,两边都要互相交替等待对方。
各位高手有何解决办法?急用。

解决方案 »

  1.   

    你可以在数据包头加上4个byte说明文件的长度,接收的时候先得到这个长度,再以这个长度来创建一个与图实际长度一样的byte数组,把后面得到的byte传给这个数组
      

  2.   

    从指定的源索引开始,复制 Array 中的一系列元素,将它们粘贴到另一 Array 中(从指定的目标索引开始)。长度和索引指定为 32 位整数。受 .NET Framework 精简版的支持。[Visual Basic] Overloads Public Shared Sub Copy(Array, Integer, Array, Integer, Integer)
    [C#] public static void Copy(Array, int, Array, int, int);
    [C++] public: static void Copy(Array*, int, Array*, int, int);
    [JScript] public static function Copy(Array, int, Array, int, int);