不同Erlang主机节点简单的文件传输
当我们需要在两台不同的主机上进行文件传输(上传,下载),类似ftp的功能。
如果我们两台机器都装有了Erlang,那么问题就变得简单了起来。
现在我有两台机器,它分别是MacBook Pro 和一台PC,为了学习方便,它们都装上了Erlang。
它们的ip地址如图
在pc启动我们的Erlang节点。(pc是windows系统,所以我们使用werl的方式启动我们的Erlang)
werl -name pc@192.168.3.2 -setcookie asd
在MBP上启动另外一个节点。
erl -name mbp@192.168.3.3 -setcookie asd
在mbp节点上,连接我们的pc节点。
1 | (mbp@192.168.3.3)1> net_kernel:connect_node('pc@192.168.3.2'). |
这样就连接成功了,nodes() 会返回我们连接的节点列表。
- 查看pc上当前的工作目录。
1 | (mbp@192.168.3.3)3> rpc:call('pc@192.168.3.2', file, get_cwd, []). |
- 列出pc当前工作目录下的文件列表
1 | (mbp@192.168.3.3)4> rpc:call('pc@192.168.3.2', file, list_dir, ["."]). |
- 把文件下载到本地。
1 | (mbp@192.168.3.3)5> {ok, Bin} = rpc:call('pc@192.168.3.2', file, read_file, ["test.txt"]). |
- 把文件上传到远程节点
1 | (mbp@192.168.3.3)8> {ok, Bin2} = file:read_file("words.sql"). |
这样就okok啦。