前阵子想连接服务器上的ftp, 可 mac 没有win 方便。虽然mac 下 smb 也挺方便, 但是 阿里云的服务商,把 smb 445的端口给封了,win 连不了。 终端下面其实可以用 lftp, 但我依然找了下, node 如何连接 ftp。 然后清一色的推荐 node-ftp. 我就拉下来用, 发现不是特别好用。 有延迟,不管是连接还是操作,都需要延迟十几秒。
看源码,就看到了这句话
var Socket = require('net').Socket
ojbk, 原来是用Socket 连的, 说实话,我不知道socket 是个啥玩意。 然后我潜意识的就打开终端 输入
telnet ip 21
然后 我就 我就看到了这句话, 220 Welcome to blah FTP service. 以及 530 Please login with USER and PASS. 然后 我就 找到了这篇文章。 https://blog.csdn.net/nowhere_/article/details/44877439 然后 我在看看源码,发现 其实 node 的socket 应该也是调用和 telnet 一样的方式 连接 服务器的。 然后 就大刀阔斧的改源码。 又觉得该别人的东西不好,而且这个东西 好多我用不到的东西。 然后 我就自己撸了一个 关键代码 只有
this.socket.connect(this.options.port, this.options.host) // 连接
this.socket.write(cmd) // cmd 和 telnet输入的一样, 比如 USER name , PASS pass
this.socket.on('data', callback) // 以及监听回调 间听到返回的code 再执行其他操作就好
挺简单的
不用这个模块的原因是 我的ftp默认是被动连接, 可代码默认的是主动连接, 所以每次要等十几秒。 (也许代码有参数配置, 我没细看,)