Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/maxomatic458/quic-send

A quic based peer-to-peer file transfer tool
https://github.com/maxomatic458/quic-send

file-transfer p2p quic

Last synced: about 2 months ago
JSON representation

A quic based peer-to-peer file transfer tool

Awesome Lists containing this project

README

        

# quic-send

quic-send is a peer-to-peer file transfer tool that uses the QUIC protocol to transfer data over a direct connection (no relay involved).

> [!NOTE]
> Because quic-send uses NAT-traversal, a direct connection might not be possible on every network.

![demo](https://github.com/user-attachments/assets/4e3e648e-a3c5-495e-ae0e-4447b2ccfed8)

## Features
- **P2P Data transfer**: All files are sent over a direct connection, the data is never relayed through another server. The only other parties
involved is a STUN server (Google STUN) and an optional roundezvous server (included in this repo).
- **Encryption**: quic-send uses the encryption provided by the [quinn](https://crates.io/crates/quinn) crate (which uses [rustls](https://crates.io/crates/rustls) and [ring](https://crates.io/crates/ring) under the hood).
- **Resumable transfers**: If the connection is lost, the transfer can be resumed from where it left off.
- **Transfer files & Folders**
- **No port forwarding required**: quic-send makes use of [UDP hole punching](https://en.wikipedia.org/wiki/UDP_hole_punching) to establish a connection between the two peers, without requiring open ports.

## Usage

### Sending files

```
$ qs send
code: 123456
on the other peer, run the following command:

qs receive 123456
```

### Receiving files

```
$ qs receive 123456
```

## Comparison with other file transfer tools
| Feature | quic-send | [Magic Wormhole](https://github.com/magic-wormhole/magic-wormhole) | [croc](https://github.com/schollz/croc) |
|---------|-----------|--------------------------------------------------------------------|-----------------------------------------|
| Encryption | ✅ | ✅ | ✅ |
| Direct (P2P) transfer | ✅ | (✅)* | ❌ |
| Resumable transfers | ✅ | ❌ | ✅ |
| Transfer files & Folders | ✅ | ✅ | ✅ |
| (fallback) Relay server | ❌ | ✅ | ✅ |

* While it is possible in Magic Wormhole, establishing a direct connection is very unlikely (as the connection tries to establish a direct TCP connection), quick send uses UDP hole punching instead which is way more reliable and works for most networks.