byte[] write = new byte[1024];
int bytes=0;
//循环读取,从网络流中读取数据到缓冲区
while(true)
{
bytes=clientSocket.Receive(write);
// 将数据写入文件
fileWriter.Write(write,0,write.Length);
if(bytes<1024)
      break;
}
为什么不会调出循环?

解决方案 »

  1.   

    发送端
    int bytes;
    byte[] rByteArray=new byte[1024];
    // 循环读出文件数据并写入网络流
    while(true)
    {
    bytes = inputStream.Read(rByteArray,0,rByteArray.Length);
    // 把缓冲区的数据写入网络流
    Strm.Write(rByteArray,0,rByteArray.Length);
    if(bytes<1024)
        break;
    }
    Strm.Flush();
    this.lstContent.Items.Add("发送文件中");
    string message1=" ";
    Byte[] endbytes=System.Text.Encoding.Default.GetBytes(message1.ToCharArray());
    Strm.Write(endbytes,0,endbytes.Length);
    //一定要再发个其它什么信息,接收端才会跳出循环
    inputStream.Close();
      

  2.   

    YAOHE(吆喝) 
    谢谢您的光临
      

  3.   

    首先,这句:
    Strm.Write(rByteArray,0,rByteArray.Length);
    应该是:
    Strm.Write(rByteArray,0,bytes);其它的,没看出原因。
      

  4.   

    这个帖没结
    在线等着呢
    发错了
    Strm.Write(rByteArray,0,bytes);不管用
      

  5.   

    byte[] write = new byte[1024];
    int bytes=0;
    //循环读取,从网络流中读取数据到缓冲区
    while(true)
    {
    bytes=clientSocket.Receive(write);
    // 将数据写入文件
    fileWriter.Write(write,0,write.Length);
    if(bytes<1024)
          break;
    }
    为什么不会调出循环?
    发送端
    int bytes;
    byte[] rByteArray=new byte[1024];
    // 循环读出文件数据并写入网络流
    while(true)
    {
    bytes = inputStream.Read(rByteArray,0,rByteArray.Length);
    // 把缓冲区的数据写入网络流
    Strm.Write(rByteArray,0,rByteArray.Length);
    if(bytes<1024)
        break;
    }
    Strm.Flush();
    this.lstContent.Items.Add("发送文件中");
    string message1=" ";
    Byte[] endbytes=System.Text.Encoding.Default.GetBytes(message1.ToCharArray());
    Strm.Write(endbytes,0,endbytes.Length);
    //一定要再发个其它什么信息,接收端才会跳出循环
    inputStream.Close();
    说明:
    添加这个段
    string message1=" ";
    Byte[] endbytes=System.Text.Encoding.Default.GetBytes(message1.ToCharArray());
    Strm.Write(endbytes,0,endbytes.Length);
    后:
    发送含有record字符串内容的文本或xml文件
    接收到的文件中结果是 
    record
    ecord
    但传送一般的doc文件内容不会多不会少
      

  6.   

    好像Read方法会一直阻塞,直到有内容可读。通常的做法是定义好协议,比如一直发送定长信息。或者发一个定长的消息头。或者用某个特殊字符作为结束符。
      

  7.   

    发送端的inputStream是什么类型的,如何进行初始化的。
      

  8.   

    Strm.Write(rByteArray,0,bytes);不管用
    _______________________________________我也知道不管用,我说这个不是为了解决你的问题,只是明显是个逻辑错误,假如你只收到100个字节,你写入了1024个字节,那么后面的那么多字节都是上次接收余下来的,肯定有问题吧。
      

  9.   

    在发送端,你这句错了
    Strm.Write(rByteArray,0,rByteArray.Length);应该如下
    Strm.Write(rByteArray,0,bytes );
      

  10.   

    FileInfo fi=new FileInfo(targetfilename);
    FileStream inputStream=new FileStream(fi.ToString(),FileMode.OpenOrCreate,FileAccess.ReadWrite);
      

  11.   

    www_123du_com(鼠·神·泪)(www.123du.com) ( ) 信誉:100 2006-8-18 10:41:56  得分: 0  首先,这句:
    Strm.Write(rByteArray,0,rByteArray.Length);
    应该是:
    Strm.Write(rByteArray,0,bytes);其它的,没看出原因。
    _______________________________________________________________________Knight94(愚翁) ( ) 信誉:110  2006-8-18 10:49:09  得分: 30  
       
    在发送端,你这句错了
    Strm.Write(rByteArray,0,rByteArray.Length);应该如下
    Strm.Write(rByteArray,0,bytes );
    ________________________________________________________________________??????????????????????????????