#file-transfer #quic #p2p

app qs-cli

A quic based peer-to-peer file transfer tool

1 unstable release

new 0.3.1 Dec 13, 2024

#1024 in Network programming

Download history 103/week @ 2024-12-09

103 downloads per month

MIT license

78KB
1.5K SLoC

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

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 crate (which uses rustls and 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 to establish a connection between the two peers, without requiring open ports.

Usage

Sending files

$ qs send <file/folder>
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 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.

The icon of the gui is made with the font Commodore 64 Rounded by Devin Cook.

Dependencies

~23–34MB
~619K SLoC