async-tftp 0.2.0

Async TFTP implementation
Documentation

async-tftp

license crates.io docs

This library provides TFTP async implementation. Currently it implements only server side.

Example

use async_tftp::server::TftpServerBuilder;
use async_tftp::Result;

fn main() -> Result<()> {
   async_std::task::block_on(async {
       let tftpd = TftpServerBuilder::with_dir_ro(".")?.build().await?;
       tftpd.serve().await?;
       Ok(())
   })
}

Add in Cargo.toml:

async-tftp = "0.2"

The above will use async-std by default, if you prefer tokio use:

async-tftp = { version = "0.2", default-features = false, features = ["use-tokio"] }

Features

  • Async implementation.
  • Serve read (RRQ) and write (WRQ) requests.
  • Unlimited transfer file size (block number roll-over).
  • You can set non-standard reply timeout. This is useful for faster file transfer in unstable environments.
  • You can set block size limit. This is useful if you are accessing client through a VPN.
  • You can implement your own Handler for more advance cases than just serving a directory.

Implemented RFCs

  • RFC 1350 - The TFTP Protocol (Revision 2).
  • RFC 2347 - TFTP Option Extension.
  • RFC 2348 - TFTP Blocksize Option.
  • RFC 2349 - TFTP Timeout Interval and Transfer Size Options.