用TCPClient可以实现断点续传么?
大家有什么好的想法

解决方案 »

  1.   

    实现断点续传是程序逻辑(业务)问题,具体地说是通信协议的问题...跟TCPClient没有任何关系...另外...断点续传需要在C/S两端都实现...
      

  2.   

    我就是想问客户端如何提出断线续传这个消息。。在下载时,客户端不断接受数据,服务器不断传输数据!,那么怎么中断这个循环
    附上
    客户端:
    while (total < size)
                    {                    receivedata = nws.Read(filebyte, total, dataleft);
                        total += receivedata;
                        dataleft = size - total;
                                       }
    服务器:
    while ((read = file.Read (sendBuffer, 0, sendBuffer.Length)) != 0)
                    {
                        nws.Write(sendBuffer, 0, read);
                        total += read;
                        Thread.Sleep(5);
                    }
    NetWorkStream nws=TcpClient.GetStream();
      

  3.   

    最简单加个停止标志呗
    while(!pauseFlag)
    {
      if(total<size){...}
    }
      

  4.   

    但是现在有个问题~在下载是主界面会假死,无法由button改变这个pauseFlag
      

  5.   

    还有后续的nws怎么办呢?服务器还是不断传输数据的~
      

  6.   

    我想到一个方法是,服务器的nws.write();还是不断向客户端发送数据,但是此时客户端并没有接受,那么服务器一直处于阻塞状态。那么如果让这个nws可以在指定时间内write就好了,如果超时了就不在write了~可以实现么?
      

  7.   

    这不是废话。一。设计断点续传,他是分块发送,每个文件,都是分成N块来发送,一次发送成功后,记录块数量,二次要是发送不成功。出异常出去了。那么成功块号就是前面的块号。在第二次连接服务器时,先发送块号+1,服务器就会用块号来计算该从哪个位置取数据发送。这样就可以实现了断点续传。一块不要大,4M这样。,断了也就是断了4M,不会重复下载很多。我是这么做得。不知道高手有更好的方法不?