音乐播放器
Great Wei
 
文章 标签
16

Powered by Gridea | Theme: Fog

Croc文件传输工具

什么是croc

croc是一种允许任意两台计算机简单安全地传输文件和文件夹的工具。AFAIK,croc是唯一可以执行以下所有操作的CLI 文件传输工具:

croc适用场景

允许任意两台计算机传输数据(使用中继)
提供端到端加密(使用 PAKE)
实现轻松的跨平台传输(Windows、Linux、Mac)
允许多个文件传输
允许恢复被中断的传输
不需要本地服务器或端口转发
ipv6 优先和 ipv4 回退
可以使用代理,比如tor

使用方法

Jul-29-2021 13-58-18.gif

croc源码分析

文件传输过程

我们可能会好奇,为什么我执行了croc xxx 就能接收到其他机器发送的文件呢
经过源码分析发现,传输过程主要有三个角色,sender,relay, receive

sender

当我执行croc send hosts的时候本地会启动一个sender,sender内部会启动对外服务的端口,创建一个room, 一个room只允许存在两个连接,一个发送者,一个接收者,此时还未出现接收者,所以room内需要保持发送者的连接,同时会生成一个room的code与password(可选项),并且将room外网地址, code 发送至 relay服务中,如果未设置relay服务,默认使用 croc.schollz.com:9009(可自行搭建)

relay

存储着room的信息,能让接收者通过code查找到连接地址

receive

croc code 可以添加--relay参数指定relay, 如果未指定默认使用croc.schollz.com:9009, relay查找到code对应的sender的连接地址,reveive连接上sender的指定room, 输入password(可选),进入room后此时存在两个连接了,sender开始将文件数据传输给receive,结束后断开连接,关闭room

如何实现断点续传

上传过程中记录读取块位置,使用固定块传输,类似dd命令,进行文件传输


请到客户端“主题--自定义配置--配置”中填入leancloud_appID和key