3个不稳定版本
0.2.1 | 2024年7月12日 |
---|---|
0.2.0 | 2024年7月8日 |
0.1.1 | 2024年6月7日 |
1655 在 网络编程
每月298次下载
用于 gday
31KB
483 行
注意:此crate仍处于早期开发阶段,因此预计会有破坏性变更。
gday_file_transfer
此库允许您向另一台对等设备提供和传输文件,前提是您已经建立了连接。
参见文档。
使用
- 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