#文件传输 #报价 #路径 #对等 # #输入/输出 #安全

gday_file_transfer

安全地在加密IO流上传输文件的协议

3个不稳定版本

0.2.1 2024年7月12日
0.2.0 2024年7月8日
0.1.1 2024年6月7日

1655网络编程

Download history 146/week @ 2024-06-03 14/week @ 2024-06-10 258/week @ 2024-07-08 7/week @ 2024-07-15 33/week @ 2024-07-22

每月298次下载
用于 gday

MIT许可证

31KB
483

注意:此crate仍处于早期开发阶段,因此预计会有破坏性变更。

gday_file_transfer

Crates.io Version docs.rs

此库允许您向另一台对等设备提供和传输文件,前提是您已经建立了连接。

参见文档

使用

  • gday - 用于发送文件的命令行工具。

lib.rs:

注意:此crate仍处于早期开发阶段,因此预计会有破坏性变更。

此库允许您在已建立可靠连接的情况下向另一台对等设备提供和传输文件。

示例

在这个例子中,对等体首先使用 gday_hole_punch 建立直接的TCP连接,并使用 gday_encryption 加密它。

在这个例子中,Peer A 和 Peer B 在不同的计算机上。

#
// Peer A offers files and folders they'd like to send
let paths_to_send = ["folder/to/send/".into(), "a/file.txt".into()];
let files_to_send = get_file_metas(&paths_to_send)?;
let offer_msg = FileOfferMsg::from(files_to_send.clone());
write_to(offer_msg, &mut stream)?;

// Peer B responds to the offer
let offer_msg: FileOfferMsg = read_from(&mut stream)?;
let response_msg = FileResponseMsg::accept_only_new_and_interrupted(
    &offer_msg,
    Path::new("save/the/files/here/"),
)?;
write_to(response_msg, &mut stream)?;

// Peer A sends the accepted files
let response_msg: FileResponseMsg = read_from(&mut stream)?;
send_files(&files_to_send, &response_msg, &mut stream, |progress| {})?;

// Peer B receives the accepted files
let save_path = Path::new("save/the/files/here/");
receive_files(&offer_msg, &response_msg, save_path, &mut stream, |progress| {})?;
#

依赖项

~1.1–2MB
~43K SLoC