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 2019 年 11 月 14 日

网络编程 中排名 1065

Download history 221/week @ 2024-03-13 164/week @ 2024-03-20 110/week @ 2024-03-27 160/week @ 2024-04-03 196/week @ 2024-04-10 209/week @ 2024-04-17 280/week @ 2024-04-24 158/week @ 2024-05-01 170/week @ 2024-05-08 252/week @ 2024-05-15 245/week @ 2024-05-22 157/week @ 2024-05-29 194/week @ 2024-06-05 158/week @ 2024-06-12 169/week @ 2024-06-19 157/week @ 2024-06-26

每月下载量 716
用于 2 个包

MIT 许可证

68KB
1.5K SLoC

async-tftp

license crates.io docs

无执行器依赖的异步 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

许可证

MIT

依赖项

~6–15MB
~209K SLoC