我在java ftp代码中遇到错误。
SimpleFTP无法请求被动模式。 我从网上复制了这个代码。但它不起作用
sendLine("PASV");
String response = readLine();
System.out.println(response);
System.out.println(response);
if (!response.startsWith("227")) {
throw new IOException("SimpleFTP could not request passive mode: " + response);
}
答案 0 :(得分:1)
看起来你可以连接到ftp服务器 - 否则你早就收到了IOExceptions或NullPointerExceptions。
问题是,您无法建立被动模式连接。如果服务器是标准产品,那么我认为,它将使用227
消息正确响应。
如果我必须调试,我将从以下开始:
答案 1 :(得分:1)
启动没有参数的命令行ftp客户端。发出debug
命令以启用协议消息显示,并发出passive
命令以设置被动模式。 (注意: windows命令行ftp不支持被动模式!)使用open
命令连接到主机。如果您需要登录,系统会提示您。发出ls
命令以获取目录列表。
通过所有这些,客户端将显示发送和接收的消息。可能存在一些代码未处理的消息变体。例如,SimpleFTP代码here不处理多行响应。请参阅RFC-959§4.2:FTP响应。
我使用的一个嵌入式系统响应成功登录:
220-Setting memory limit to 1024+1024kbytes
220-Local time is now 10:33 and the load is 1.36.
220 You will be disconnected after 1800 seconds of inactivity.
SimpleFTP代码失败,因为它期望以"220 "
开头的单行。
此外,尽管FTP协议已经很老了,但您会遇到很多不合规的实现。
如果您需要执行比“放置文件”或“获取文件”更复杂的操作,请查看edtFTPj/Free。