Simple in-network file transfer with barely any overhead.

Overview

fftp

fftp is the "Fast File Transport Protocol". It transfers files quickly between computers on a network with low overhead.

Motivation

FTP uses two ports which makes it inconvenient to reverse proxy. HTTP file servers might be too bulky for certain things, and they aren't as fast as FTP. Both use TCP. This is my duct tape and chicken wire compromise.

Use

The client is ff. The server is ffd.

# Create a file.
mkdir test
echo "hi" > test/test.txt

# Start running a server.
ffd -d MY_LOCAL_IP:8080 test

# List files available.
ff MY_LOCAL_IP:8080 ls

# Download a file.
ff MY_LOCAL_IP:8080 get test.txt

Goals

  • Minimal communication overhead
  • Fast
  • Maintainable
You might also like...
A simple cross-platform remote file management tool to upload and download files over HTTP/S

A simple cross-platform remote file management tool to upload and download files over HTTP/S

Network simulation in Rust

netsim - A Rust library for network simulation and testing (currently linux-only). netsim is a crate for simulating networks for the sake of testing n

A private network system that uses WireGuard under the hood.

innernet A private network system that uses WireGuard under the hood. See the announcement blog post for a longer-winded explanation. innernet is simi

A Curve-like AMM for Secret Network

A Curve-like AMM for Secret Network. Supports a varibale number of tokens with the same underlying value.

A multi-protocol network relay

A multi-protocol network relay

A Rust library for parsing the SOME/IP network protocol (without payload interpretation).

someip_parse A Rust library for parsing the SOME/IP network protocol (without payload interpretation). Usage Add the following to your Cargo.toml: [de

Computational Component of Polkadot Network
Computational Component of Polkadot Network

Gear is a new Polkadot/Kusama parachain and most advanced L2 smart-contract engine allowing anyone to launch any dApp for networks with untrusted code.

Fullstack development framework for UTXO-based dapps on Nervos Network

Trampoline-rs The framework for building powerful dApps on the number one UTXO chain, Nervos Network CKB. This is an early-stage, currently very incom

Official Implementation of Findora Network.

Findora Platform Wiki Contribution Guide Licensing The primary license for Platform is the Business Source License 1.1 (BUSL-1.1), see LICENSE. Except

Releases(v0.2.0)
  • v0.2.0(Nov 4, 2021)

    This release introduces the Fast File Transfer Protocol in a slightly more mature stage. Nothing is final.

    There's some new stuff:

    • You can now list subdirectories
    • Buffer size is no longer an option
    • Packet sizes are more consistent
    • Packet endianness is now enforced
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Sep 26, 2021)

    This release introduces the Fast File Transfer Protocol in its earliest stage. Nothing is final.

    Right now, the server supports listing of a single directory and chunked downloads. The client supports downloads of multiple files and uPNP with compatible gateways. The addition of uPNP bloats binary size, but may prove useful should authentication and/or encryption be added atop the transport layer.

    For now, this is the working setup:

    # Create a file.
    mkdir test
    echo "hi" > test/test.txt
    
    # Start running a server.
    ffd -d localhost:8080 test
    
    # List files available.
    ff localhost:8080 ls
    
    # Download a file.
    ff localhost:8080 get test.txt
    
    Source code(tar.gz)
    Source code(zip)
Yet Another File Transfer Protocol.

yaftp Yet Another File Transfer Protocol. Build & Run $> cargo build --release Features C2C Lightweight Per something per session High performence Res

b23r0 20 Sep 22, 2022
Quick Peer-To-Peer UDP file transfer

qft QFT is a small application for Quick (and really reliable) Peer-To-Peer UDP file transfer. If a friend sent you here... ...look at the "Releases"

Daniel H. 99 Jan 7, 2023
P2P File Transfer

P2P File Transfer Overview This is a small project to help solve a problem that should've been solved by now: file transfer. For in-person file transf

Saksham Mittal 2 Dec 15, 2022
A high performance/low-overhead OpenMetrics library for Rust

* * * EXPERIMENTAL * * * discreet-metrics A high-performance/low-overhead metrics library aiming to conform with OpenMetrics and to satisfy the follow

null 2 Sep 14, 2022
Docker containers on a synthetic network. Run applications in a context that lets you manipulate their network conditions.

Synthetic Network Docker containers on a synthetic network. Run applications in a context that lets you manipulate their network conditions. Dependenc

Daily 58 Dec 15, 2022
Replay packets from pcap -file to network interface

pktreplay can be used to read packets from pcap file or interface and write them into interface. By default packets are written with the same rate they have been saved into the pcap file, or, when reading from interface, as fast as they are received.

Jukka Taimisto 3 Nov 23, 2022
wireguard tool to manage / generate configuration. Maintain one yaml configuration file to quickly build wireguard network.

wgx wireguard tool to manage / generate configuration. Maintain one yaml configuration file to quickly build wireguard network. Usage wgx --h USAGE:

yinheli 6 Nov 3, 2022
Hotwire allows you to study network traffic of a few popular protocols in a simple way

Hotwire Hotwire is a gtk GUI application that leverages the wireshark and tshark infrastructure to capture traffic and explore the contents of tcpdump

null 194 Dec 30, 2022
A simple configuration-based module for inter-network RPC in Holochain hApps.

DNA Auth Resolver A simple configuration-based module for inter-network RPC in Holochain hApps. About Usage In the origin zome In the destination DNA

Shadman Baig 0 Feb 4, 2022
The netns-rs crate provides an ultra-simple interface for handling network namespaces in Rust.

netns-rs The netns-rs crate provides an ultra-simple interface for handling network namespaces in Rust. Changing namespaces requires elevated privileg

OpenAnolis Community 7 Dec 15, 2022