#文件传输 #tftp #客户端-服务器 #简单 #协议 #目录 #选项

bin+lib rtftp

简单文件传输协议的客户端和服务器实现

2 个稳定版本

1.1.2 2021年8月6日

#10#tftp

GPL-3.0-or-later

56KB
1.5K SLoC

RusTFTP

使用 Rust 编写的简单文件传输协议的客户端和服务器实现。

Crates.io

目前支持

  • RFC 1350 (TFTP 修订版 2)
  • RFC 2347 (选项扩展)
  • RFC 2348 (块大小选项)
  • RFC 2349 (超时间隔和传输大小选项)

非标准选项

  • blksize2: 以 2 为幂的块大小
  • utimeout: 微秒级超时

使用 cargo 构建二进制文件(输出目录为 target/release/

$ cargo build --release

直接下载、编译和安装二进制文件

$ cargo install rtftp

客户端

$ ./rtftpc --help
RusTFTP

./rtftpc [options] <remote>[:port]

Options:
    -h, --help          display usage information
    -g, --get FILE      download file from remote server
    -p, --put FILE      upload file to remote server
    -b, --blksize SIZE  negotiate a different block size (default: 1428)
    -n, --netascii      use netascii mode (instead of octet)

服务器

$ ./rtftpd --help
RusTFTP

./rtftpd [options] [directory]

Options:
    -h, --help          display usage information
    -p, --port PORT     port to listen on (default: 69)
    -u, --uid UID       user id to run as (default: 65534)
    -g, --gid GID       group id to run as (default: 65534)
    -r, --read-only     allow only reading/downloading of files (RRQ)
    -w, --write-only    allow only writing/uploading of files (WRQ)
    -t, --threads N     number of worker threads (default: 2)

注意

由于块号是两字节长,块的数量限制为 65535(第一个块从 1 开始)。为了支持传输超过 65535 块的文件,在达到最大值后会回绕并从 0 开始,这不在标准中定义。

许可证

本程序是自由软件:您可以按照自由软件基金会发布的 GNU 通用公共许可证的条款重新分发和/或修改它,许可证版本为 3,或(根据您的选择)任何后续版本。

依赖关系

~2MB
~40K SLoC