Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未处理与Node.js套接字代码一起提交的FTP命令_Node.js_Sockets_Events_Ftp - Fatal编程技术网

未处理与Node.js套接字代码一起提交的FTP命令

未处理与Node.js套接字代码一起提交的FTP命令,node.js,sockets,events,ftp,Node.js,Sockets,Events,Ftp,我使用telnet进行了以下FTP会话: $telnet ftp.fsn.hu 21 正在尝试195.228.252.133。。。 已连接到ftp.fsn.hu。 转义字符为“^]”。 220 ftp.fsn.hu ftp服务器(版本6.00LS)已就绪。 匿名用户 331客户登录确定,将您的电子邮件地址作为密码发送。 通过joe@example.com 230来宾登录正常,访问限制适用。 我尝试将其自动化: var net = require('net'); var sock = net.

我使用telnet进行了以下FTP会话:

$telnet ftp.fsn.hu 21
正在尝试195.228.252.133。。。
已连接到ftp.fsn.hu。
转义字符为“^]”。
220 ftp.fsn.hu ftp服务器(版本6.00LS)已就绪。
匿名用户
331客户登录确定,将您的电子邮件地址作为密码发送。
通过joe@example.com
230来宾登录正常,访问限制适用。
我尝试将其自动化:

var net = require('net');

var sock = net.Socket();

var regex220 = /^220/;

var regex331 = /^331/;

var regex230 = /^230/;

sock.on('data', function (buffer)
  { console.log('data received:\n' + buffer);

    if (buffer.toString().match(regex220) !== null)
    {
      sock.write('USER anonymous');
      console.log("sent: 'USER anonymous'");
    } else if (buffer.toString().match(regex331) !== null)
    {
      sock.write('PASS joe@example.com');
      console.log("sent: 'PASS joe@example.com'");
    } else if (buffer.toString().match(regex230) !== null)
    {
      console.log('LOGGED IN');
    }
  });

sock.connect(21, 'ftp.fsn.hu');
在Fedora 32和Node.js 12.16.1上运行此命令

$node fsn.js
收到的数据:
220 ftp.fsn.hu ftp服务器(版本6.00LS)已就绪。
已发送:“用户匿名”
它就挂在那里

为什么该程序没有通过第二轮和第三轮?

您必须使用CRLF终止(提交)命令:

sock.write('USER anonymous\r\n');

哦,你说得对。