12 个版本
0.3.6 | 2022 年 12 月 16 日 |
---|---|
0.3.5 | 2021 年 1 月 28 日 |
0.3.4 | 2020 年 12 月 12 日 |
0.3.3 | 2020 年 9 月 14 日 |
0.0.1 |
|
在 网络编程 中排名 1065
每月下载量 716
用于 2 个包
68KB
1.5K SLoC
async-tftp
无执行器依赖的异步 TFTP 实现,使用 smol 块构建。目前仅实现了服务器端。
实现了以下 RFC:
- RFC 1350 - TFTP 协议(修订版 2)。
- RFC 2347 - TFTP 选项扩展。
- RFC 2348 - TFTP 块大小选项。
- RFC 2349 - TFTP 超时间隔和传输大小选项。
功能
- 异步实现。
- 与任何运行时/执行器兼容。
- 处理读(RRQ)和写(WRQ)请求。
- 无限传输文件大小(块编号回滚)。
- 您可以设置非标准回复
timeout
。这在不稳定的环境中快速传输文件很有用。 - 您可以设置 块大小限制。如果您通过 VPN 访问客户端,这很有用。
- 您可以实现自己的
Handler
以处理比仅提供目录更复杂的场景。请参阅tftpd-targz.rs
的示例。
示例
use async_tftp::server::TftpServerBuilder;
use async_tftp::Result;
fn main() -> Result<()> {
smol::block_on(async { // or any other runtime/executor
let tftpd = TftpServerBuilder::with_dir_ro(".")?.build().await?;
tftpd.serve().await?;
Ok(())
})
}
在 Cargo.toml
中添加
[dependencies]
smol = "1" # or any other runtime/executor
async-tftp = "0.3"
使用 cargo 运行示例
此包包含一些示例。您可以使用 cargo 从源代码检查中运行它们
$ cargo run --example tftpd-dir
TFTP directory: ...
Listening on: 0.0.0.0:6969
^C
$ cargo run --example tftpd-targz <archive-path>
Listening on: 0.0.0.0:6969
^C
许可证
依赖项
~6–15MB
~209K SLoC