这样修改
int iBytes=1;
while(iBytes>0)两段都这样改就行了,猜的

解决方案 »

  1.   

    好像是传输完文件后,阻塞在StreamTCP.Write(ReadBuffer,0,iBytes);一句上,有时连紧跟其后的语句都执行不了。
      

  2.   

    看了CSDN上的介绍,NetworStream的Write和Read方法会阻塞程序直到所要求的字节发送或接收完。那么怎样才能避免这种阻塞呢?
      

  3.   

    http://www.eaoo.com/design/list.asp?classid=2&Nclassid=44
      

  4.   

    cnpr(-----) 是在做广告吧,几乎每个贴子上都有这个网址
      

  5.   

    这样改一下不行吗?
    int iBytes=1;
    while(iBytes>0)
    这样就可以达到客户端传完断开连接,服务器接收完关闭SOCKET了嘛
      

  6.   

    ///传输方
    while(!StreamTCP.Readable)
    {
       if(StreamTCP.Writeable)
       StreamTCP.Write(ReadBuffer,0,iBytes);
    }///接受方
    while(!StreamTCP.Readable)
    {
       if(StreamTCP.Readable)
       iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);
    }
      

  7.   

    错了,更正///传输方
    while(!StreamTCP.Writeable)
    {
       if(StreamTCP.Writeable)
       StreamTCP.Write(ReadBuffer,0,iBytes);
    }///接受方
    while(!StreamTCP.Readable)
    {
       if(StreamTCP.Readable)
       iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);
    }
      

  8.   

    to  yuzaichun(最爱.NET),我在程序中只是随便举了一个fbytes=1024字节的例子,fbytes实际是根据文件大小自动取得的,每次约定传送512字节。问题是每当发送到最后一次循环上就阻塞了,发送方停在StreamTCP.Write(ReadBuffer,0,iBytes);这句上不能跳出。(这时的iBytes<512字节),而接受方也阻塞。to loadme_litbear(沙漠@雨季),这个方法试了,不可行。
      

  9.   

    ///传输方
    if(StreamTCP.Writeable)StreamTCP.Write(ReadBuffer,0,iBytes);
    else
    {
       while(!StreamTCP.Writeable)
       {
          if(StreamTCP.Writeable)
          StreamTCP.Write(ReadBuffer,0,iBytes);
       }
    }
    ///接受方
    if(StreamTCP.Readable)iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);
    else
    {
       while(!StreamTCP.Readable)
       {
          if(StreamTCP.Readable)
          iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);
       }
    }这样试试?
      

  10.   

    ///传输方
    if(StreamTCP.Writeable)StreamTCP.Write(ReadBuffer,0,iBytes);
    else
    {
       while(!StreamTCP.Writeable)
       {
          if(StreamTCP.Writeable)
              {
                  StreamTCP.Write(ReadBuffer,0,iBytes);
                  break;
              }
       }
    }
    ///接受方
    if(StreamTCP.Readable)iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);
    else
    {
       while(!StreamTCP.Readable)
       {
          if(StreamTCP.Readable)
              {
                  iBytes = StreamTCP.Read(WriteBuffer,0,WriteBuffer.Length);
                  break;
              }
       }
    }不好意思,毛病太多,我是初学者
    就这样吧,思路给你了,看看能不能解决
      

  11.   

    阻塞我十几天的问题终于解决,关键就在progressBar1,因为我在线程中修改进度栏,引起程序崩溃,我以为是程序阻塞了。改用Invoke就行了。请看:http://expert.csdn.net/Expert/TopicView1.asp?id=2296126 多谢大家,给分!!!