这个是接收端的,发送端每次发送1024字节过来。
buffersize=1024;
byte [] receive=new byte[size];//size为接收文件的大小
while (total < size)
                {
                    read = stream.Read(receive, total, buffersize);
                    total += read;
                }
我的问题是,在最后一次,发送端传来了658个字节,但是接收端的read仍然是读出1024哥字节,导致receive大小不足,引发异常。按道理最后一次的read也是为658才对的呀~为什么的呢?我调试过,发送端最后一次确实只是发送了658个字节
附上发送端
byte [] send =new byte [1024];
                
                while((read = fs.Read(send, 0, send.Length))!=0) 
                {
                    stream.Write(send, 0, read);
                    total += read;                }

解决方案 »

  1.   

    开始传输前你传一个总长度过去,然后接收的时候判断一下是不是最后一次接收,如果是
    read = stream.Read(receive, total, (总长度%1024));
      

  2.   

    你判断一下是不是最后一次接收,如果是
    read = stream.Read(receive, total, 总长度%1024);
      

  3.   

    你判断一下是不是最后一次接收,如果是
    read = stream.Read(receive, total, 总长度%1024);
      

  4.   

    先取得到最长队,再做while循环。
      

  5.   


    while (size > buffersize)
    {
          read = stream.Read(receive, receive.Length - size, buffersize);
          size -= read;
    }
    read = stream.Read(receive, receive.Length - size, size);没有必要一定要在循环中接收全部 有时候可以简单一点!还有最好不要在循环里添加判断之类 因为每循环一次就需要判断一次 这是有损耗的!