while(true)
{
vData=new byte[1024];    bytes=vSocket.Receive(vData);    
    if(bytes<=0) break;
    vFileStream.Write(vData,0,vData.Length);
}

解决方案 »

  1.   

    按错键啦,不好意思;while(true)
    {
        vData=new byte[1024];
       
        bytes=vSocket.Receive(vData);    
        if(bytes<=0) break;
        vFileStream.Write(vData,0,vData.Length);
    }
    .Write(vData,0,vData.Length);
      

  2.   

    回poetc:
    接收用1024长度,但是每接收包内容并不能达到1024,写入文件后有垃圾数据。如果接收长度换成vSocket.Available长度,结果还是不对。还有,发送端发送后,程序怎么不阻塞?
      

  3.   

    vFileStream.Write(vData,0,vData.Length);改成:
    vFileStream.Write(vData,0,bytes);
      

  4.   

    //声明接收返回内容的字符串 
       string recvStr=""; 
       //声明字节数组,一次接收数据的长度为1024字节 
       byte[] recvBytes=new byte[1024]; 
       //返回实际接收内容的字节数 
       int bytes=0; 
      //循环读取,直到接收完所有数据 
      while(true) 
      { 
      bytes=socket.Receive(recvBytes,recvBytes.Length,0); 
      //读取完成后退出循环 
      if(bytes<=0) 
      break; 
      //将读取的字节数转换为字符串 
      recvStr+=Encoding.ASCII.GetString(recvBytes,0,bytes); 
      } 
      //将所读取的字符串转换为字节数组 
      byte[] content=Encoding.ASCII.GetBytes(recvStr); 
       try 
       { 
       //创建文件流对象实例 
       FileStream fs=new FileStream(fileName,FileMode.OpenOrCreate,FileAccess.ReadWrite); 
      //写入文件 
      fs.Write(content,0,content.Length); 
      } 
      catch(Exception fe) 
       { 
       MessageBox.Show("文件创建/写入错误:"+fe.Message,"提示信息",MessageBoxButtons.RetryCancel,MessageBoxIcon.Information); 
       }