使用webRTC的相关技术栈可以很轻松的开发一个p2p文件传输工具,这里主要讲下使用datachannel开发的一个文件传输工具client程序的使用
客户端A:需要可以访问公网,运行client的主机
客户端B:可以访问公网,可以和客户端A在同一个局域网内,也可以在不同的网络环境,不同的NAT环境,更能演示P2P穿透,运行client主机
首先发送文件的客户端A运行
client会连接websocket后台的信号服务器,提示输入remote ID,说明已经正常。
客户端A,也就是发送端,需要指定文件,启动之后,等待输入对端的ID信息
接收端B启动
运行远端,也就是文件接收方,这里也是一样的,但是这里要留意下local ID,wT4I
注意接收端这里不带-f的参数,这里是接受发送端发送的文件。
输入ID
输入ID后,正常state 会从connecting,到最后的connected,然后会建立datachannel,最后就可以发送文件数据了。
开始接受数据
我这里稍微修改了下代码,会看到发送文件的大小,以及当成传送的字节数。也可以把文件的md5值给传送过来,用于校验。
传送结束
传输结束,关闭datachannel。
一致性检查
用md5sum校验下内容是否一致。发现是完全一致的。可以找个实网的环境来测试下,这个是会实现NAT穿透的
备注:用电信手机拨号分享的网络好像穿透失败,无法正常打洞。都是宽带测试了几个都是可以的。速度能到3MB/s ~ 4MB/s. 非常不错。
下载链接
https://download.csdn.net/download/lvronglee/89380980
整个代码主要是编译对example的代码进行少许的修改,以及python的信号服务代码,可以非常方便的部署到阿里云上测试。
需要源码/或者编译方法的关注,私信留言