Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danitilahun/bit_torrent
GoTorrent: Efficient Golang BitTorrent client with concurrency, precise parsing, and resilient tracker communication. Scalable, fault-tolerant, and handles multiple transfers seamlessly.
https://github.com/danitilahun/bit_torrent
bit-torrent concurrency go golang leecher peer-to-peer seeder torrent
Last synced: about 4 hours ago
JSON representation
GoTorrent: Efficient Golang BitTorrent client with concurrency, precise parsing, and resilient tracker communication. Scalable, fault-tolerant, and handles multiple transfers seamlessly.
- Host: GitHub
- URL: https://github.com/danitilahun/bit_torrent
- Owner: Danitilahun
- Created: 2024-02-04T11:02:46.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-02-10T13:12:26.000Z (9 months ago)
- Last Synced: 2024-10-23T03:19:49.897Z (15 days ago)
- Topics: bit-torrent, concurrency, go, golang, leecher, peer-to-peer, seeder, torrent
- Language: Go
- Homepage:
- Size: 371 KB
- Stars: 2
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Bit-Torrent Client Using Golang
## Setup
1. **Initialize Go Modules:**
- Run the following command to download and install dependencies:
```
go mod tidy
```2. **Add Torrent File in `main.go`:**
- Open the `main.go` file and include a valid `.torrent` file. For example, you can use a Debian ISO file.
3. **Run the Main Program:**
- Execute the following command to start the GoTorrent client:
```
go run main.go
```These steps ensure that the necessary dependencies are fetched, a valid torrent file is added to the `main.go` file, and the main program is executed to run the GoTorrent client. Adjustments might be needed based on the specifics of your project structure and configuration.
# Torrent Client Project Features
## Overview
This project entails the creation of a command-line torrent client utilizing Go. The client enables seamless file downloads and uploads via the BitTorrent protocol, harnessing Go's built-in concurrency and networking capabilities for optimal performance.
## Key Components
### Efficient Download/Upload
- The client adeptly handles extensive file transfers, leveraging Go's concurrency features for simultaneous downloads and uploads.
### Parser Accuracy
- Torrent files are parsed with precision, extracting vital information such as tracker URL, file name, size, and pieces.
### Robust Tracker Communication
- Establishes reliable communication with the tracker, ensuring up-to-date information on available peers.
### Piece-Level Management
- Effective piece management guarantees a systematic download and upload process, ensuring file completeness.
### Concurrency for Scalability
- Utilizes Go's concurrency features to seamlessly handle multiple downloads and uploads concurrently.
### Error Resilience
- Robust error handling mechanisms ensure the client gracefully manages unexpected scenarios, maintaining stability.
### Fault Tolerance and Recovery
- The client exhibits resilience, recovering from errors and persisting bitfield information to ensure continuity in processes.
## Limitations
The torrent client has the following limitations:
1. **File Type Support:**
- Only supports `.torrent` files.
- Does not support magnet links.2. **Tracker Protocol:**
- Only supports HTTP trackers.
- Does not support other tracker protocols.3. **Torrent Structure:**
- Does not support multi-file torrents.
- Currently designed for single-file torrents.These limitations outline the current scope of the torrent client and represent areas where future improvements or additional features could be considered.
In summary, the project delivers a functional and efficient torrent client, demonstrating prowess in efficient file transfers, accurate parsing, robust communication, and resilience in the face of errors.
## Group Members
| Name | ID | Section |
| -------------- | ----------- | ------- |
| Bilen Mehalek | UGR/0252/13 | 1 |
| Daniel Tilahun | UGR/2557/13 | 1 |
| Dawit Minale | UGR/7990/13 | 2 |
| Rihana Ersanu | UGR/8031/13 | 2 |
| Robel Tesfaye | UGR/8429/13 | 1 |[GitHub Repo](https://github.com/Danitilahun/Bit_Torrent)