如题,现在用的是SOCKet传输  如,客户端在向服务器传输的过程中断网了或者程序意外关闭,这时候要实现,当客户端再次登陆后,实现续传的功能
就像迅雷等下载软件,我在程序下载或者上传了一半的情况下,我可以暂停,下次继续下载或者上传文件传输C#断线重连SOCKet断线重连C#文件续传

解决方案 »

  1.   

    Socket的断点没写过,只写过通过HttpWebRequest.AddRange(fileStream.Length)来改变下载流的起始位置,以达到断点续传的功能。我想原理应该是差不多的吧
      

  2.   

    接收端每次接收数据的时候  都要记录当前文件传输信息  比如  文件标示符、文件大小、已接收字节数、校验位 等等   下次请求文件的时候  将这些数据发送给服务器  服务器按照上一次发送的状态 接着发送数据
    这个跟 CPU调度线程类似  CPU在调度线程时 都会把上一个线程的运行状态保存下来 即所谓的“保护现场” 下一次调度时 进行还原
      

  3.   

    一般是客户端保存下载的相关数据,比如资源校验码,文件总长度,已下载的块(如果是多线程分块下载),及每一块已下载的长度
    续传时一般要先验证一下是否是之前那资源,然后将流Seek到指定已下载位置,继续写入
      

  4.   

    那是因为一个大文件被分解为成千上万的小数据块(相当于小文件)。例如50k字节一个数据块,一个文件有2000块,那么就是有2000个独立的程序。你能用你的“想象力”去针对“独立的”这个概念去设计,就不会糊涂了。例如我可以询问一下服务器“第1899块的md5值是多少啊?”这样的查询,我也可以要求服务器给我回答“从200数据块~300数据块之间的”字节全为0“的数据块的块号列表。总之要针对信令和通讯时序进行设计。
      

  5.   

    我听的云里雾里,有没有实际的demo呢?,没搞过这些
      

  6.   

    的确很迷茫,以前都没接触过通信方面的东西,现在老板又让改成wcf了,所以这个东西暂时需要放一放