2 个稳定版本
1.1.2 | 2021年8月6日 |
---|
#10 在 #tftp
56KB
1.5K SLoC
RusTFTP
使用 Rust 编写的简单文件传输协议的客户端和服务器实现。
目前支持
- 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