A download manager is a software which enables a user to download any resource from internet at greater speeds .But how ?
As you may be aware a TCP/IP connection is established whenever we make a request to download something. But this connection distributes bandwidth evenly across all the devices working in the same network. For example, if there are 4 devices connected to same network all the 4 devices get the same bandwidth. In other words, each TCP connection allocates itself some even bandwidth but what if there are multiple TCP connections working concurrently to download single piece of information ? You are right! Download speed increases ! The same concept is exploited in download manager. The only constraint or drawback is download manager doesn’t work at its best if resource on the server do no allow partial download .
I have tried to implement a download manager on my own. I have spawned 4 threads which independently requests information and writes the downloaded information into a binary at appropriate offset. I have package called tqdm for progress of download.
Features for future versions:
- Pause download
- Better GUI
source code : https://github.com/makaravind/DownloadManager