Bit-torrent client implementation as part of CS2433 (Principles of Programming Language II ) by Prof. Saurabh Joshi .
- Description
- Documentation
- Setup
- Usage
- Guidelines for contribution
- External packages
- Resources and References
- Objective
- Get familiar with writing concurrent programs.
- Using software technologies like Continous Integration, Unit Testing, Documentation.
- Features
- Downloading multiple torrent files concurrently.
- Fetching Peer lists from both HTTP and UDP Trackers.
- Fetching pieces of blocks concurrently from Peers.
- Enabling Resume capabilities on abrupt termination.
- Generating detailed log files for debugging.
- A command line interface for managing.
- Team
- Shraiysh Gupta (CS17BTECH11050)
- Puneet Mangla (CS17BTECH11029)
- Lingam Sai Ramana Reddy (CS17BTECH11022)
- Hitesh (MA17BTECH11004)
- You can refer to this to see the documentation generated for the master branch.
-
Installing Golang
- Follow this link OR
- Run
sudo apt-get install golang - Set the environment variables
GOPATHandGOBINas follows :GOPATH="$HOME/go"GOBIN="$GOPATH/bin"PATH=$PATH:$GOBIN
-
Building
Get dep for installing the dependencies
$ cd $GOPATH/src/github.com # Come to the appropriate directory $ git clone https://github.com/IITH-SBJoshi/concurrency-8.git $ cd concurrency-8/ $ dep ensure # Get the dependencies $ ./build.sh # To check if all tests passes
- Downloading
go run main.go --files File1 File2 File3 -v -d ../../
- Flags
| Flag Name | Description | Default |
|---|---|---|
--files [path] [path] ... |
List of Torrent Files | empty |
--download -d |
Specify the download path for downloading the files. | "" |
--rescap -rc |
True if pause and resume feature is needed. False otherwise. | false |
--resume -r |
True to resume partially downloaded files. | false |
--help |
Print this help message and exit. | - |
--verbose -v |
True if misc output is required. False otherwise. | false |