Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Download Management

Download Management

Scheduled Pinned Locked Moved C / C++ / MFC
learning
3 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    abhinarulkar
    wrote on last edited by
    #1

    Hi, Could anyone provide some pointers on download management concepts. The Download Management would essentially mean download acceleration, download resumption if connection fails etc. I would like to know how all this is done and any sample code if possible. Thanks and Regards, Abhishek. Learning is a never ending process of Life.

    M 1 Reply Last reply
    0
    • A abhinarulkar

      Hi, Could anyone provide some pointers on download management concepts. The Download Management would essentially mean download acceleration, download resumption if connection fails etc. I would like to know how all this is done and any sample code if possible. Thanks and Regards, Abhishek. Learning is a never ending process of Life.

      M Offline
      M Offline
      Mike Dimmick
      wrote on last edited by
      #2

      Basically, it relies on the range capability of HTTP and the restart capability of FTP. For download acceleration (where this does not mean altering the configuration of the TCP/IP stack, which has happened to me a few times with this sort of software), the client requests different ranges on different connections. This gets around the bandwidth throttles that some sites apply on a per-connection basis. It can also sometimes help to have an additional connection if the first one stalls. Some accelerators communicate with their authors' website, to discover mirrors of the content (Go!Zilla used to do this). The download manager then connects to multiple mirror sites, dividing the content between them. The specification for HTTP/1.1 says, 'A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy.' Download accelerators often break this rule. Resuming a download is much the same - for HTTP, you set the Range header to start at the point that failed, while for FTP you use the REST command to indicate where you want to restart. However, the server may not understand the command - you may need to fall back to retrieving the whole. I believe the WinInet DLL does allow setting restart points, although I think you have to add to the headers (HTTP) or send the command explicitly (FTP). WinInet enforces the two connection limit mentioned above.

      A 1 Reply Last reply
      0
      • M Mike Dimmick

        Basically, it relies on the range capability of HTTP and the restart capability of FTP. For download acceleration (where this does not mean altering the configuration of the TCP/IP stack, which has happened to me a few times with this sort of software), the client requests different ranges on different connections. This gets around the bandwidth throttles that some sites apply on a per-connection basis. It can also sometimes help to have an additional connection if the first one stalls. Some accelerators communicate with their authors' website, to discover mirrors of the content (Go!Zilla used to do this). The download manager then connects to multiple mirror sites, dividing the content between them. The specification for HTTP/1.1 says, 'A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy.' Download accelerators often break this rule. Resuming a download is much the same - for HTTP, you set the Range header to start at the point that failed, while for FTP you use the REST command to indicate where you want to restart. However, the server may not understand the command - you may need to fall back to retrieving the whole. I believe the WinInet DLL does allow setting restart points, although I think you have to add to the headers (HTTP) or send the command explicitly (FTP). WinInet enforces the two connection limit mentioned above.

        A Offline
        A Offline
        abhinarulkar
        wrote on last edited by
        #3

        Thanks a lot Mike for your help. Could you suggest me some online resource where I can do a detailed study on this subject and where I can find some sample code on how exactly this can be done. I would be greatful if you could provide me with this info. Thanks Abhishek. Learning is a never ending process of Life.

        1 Reply Last reply
        0
        Reply
        • Reply as topic
        Log in to reply
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes


        • Login

        • Don't have an account? Register

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • World
        • Users
        • Groups