项目作者: chenwenshu

项目描述 :
Faster download with multithreading
高级语言: Python
项目地址: git://github.com/chenwenshu/multithreaded-downloader.git
创建时间: 2018-10-23T21:13:29Z
项目社区:https://github.com/chenwenshu/multithreaded-downloader

开源协议:

下载


Multi-threaded Downloader

This is a group project for SUTD 50.012 Networks.

Strawman Proposal

Project Report

Project Presentation

Getting Started

Clone the repository. The client and the server can run from the same host or different ones.

Use of a virtual environment is encouraged.

Dependencies

  • Python 3
  • Click
  • filesplit
  • tqdm

Install the dependencies using pip:

  1. pip3 install Click filesplit tqdm

How to Use

This programme consists of a client and a server.

  1. Launch the server from command line
    python3 MTD_server.py -s {server IP address}

    other options:

    • --server-tcp-port {port number} to manually set the TCP port number. Default is 12001.
    • -r {transmission rate} to manually set the transmission rate in Mbps. Default is 10000.0 Mbps.
  2. Start the client from command line
    python3 MTD_client.py -c {client IP address} -s {server IP address} -f {file to download}

    other options:

    • --client-udp-port {port number} to manually set the UDP port number. Default is 50000.
    • --server-tcp-port {port number} to manually set the TCP port number. Default is 12001.
    • -t {number of threads} to manually set the number of threads used during download. Default is 4.
  3. Once the client and the server establish connections, progress bars are shown in the terminal to indicate the
    downloading status of each thread. Progress bars are listed in ascending order of the thread number.

    progress bar

  4. MD5 hashing is implemented in the programme. Once the transmission finishes, the client verifies the integrity of the received file against the server’s hash.

Demonstration

Our group has a Raspberry Pi set up, running the server remotely in the Pi Lab. The client script runs on a laptop in the LEET Lab.

demo

Authors

  • Kimberlyn Loh1
  • Tan Yi Long
  • Delbert Felix Nurawan
  • Chen Wenshu

Timeline

  • Initial Research
  • Code
  • Test
  • CLI
  • GUI
  • Submit Beta Version :calendar: 7/11/18
  • Submit Final Version :calendar: 14/11/8

1 Group Leader