Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/maxomatic458/quic-send
- Owner: maxomatic458
- License: mit
- Created: 2024-05-18T11:53:10.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2024-05-19T13:45:39.000Z (7 months ago)
- Last Synced: 2024-05-19T14:39:56.401Z (7 months ago)
- Topics: file-transfer, p2p, quic
- Language: Rust
- Homepage:
- Size: 59.6 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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.