我使用的是专有的编程语言,它没有内置的FTP函数。因此,我正在使用sockets

sHandle := SocketOpen('ftp.stackoverflow.net', 21);
SocketReadString(sHandle, answer);

retW := SocketWriteString(sHandle, 'user user1673665' & CHR(13) & CHR(10));
SocketReadString(sHandle, answer);
retW := SocketWriteString(sHandle, 'pass !@#$%^&*' & CHR(13) & CHR(10));
SocketReadString(sHandle, answer);

retW := SocketWriteString(sHandle, 'cwd update' & CHR(13) & CHR(10));
SocketReadString(sHandle, answer);
retW := SocketWriteString(sHandle, 'retr update.txt' & CHR(13) & CHR(10));
SocketReadString(sHandle, answer);

SocketClose(sHandle);

这些是我从FTP服务器收到的答案:



但是,为什么在retr update.txt之后出现此错误:



我正在逐步调试代码。因此,响应时间应该不是问题。

最佳答案

RETR命令必须至少在PASVPORT之前,以建立数据连接。

请查阅RFC 959,尤其是“3.2。建立数据连接”部分

另请注意,FTP命令应以大写形式发送。

关于sockets - 使用FTP命令下载带有套接字的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58288097/

10-10 15:20