【发布时间】:2015-04-12 15:19:55
【问题描述】:
我创建了一个无法连接到服务器的 FTP 客户端(被动)。我使用的 FTP 服务器是 Filezilla;我只是用它来测试。每次我运行 java 程序(FTP 客户端)时,Filezilla 都会断开连接,并且在 Eclipse 中出现这些错误:Exception in thread "main" java.io.IOException: SimpleFTP received an unknown response when connecting to the FTP server: 220-FileZilla Server version 0.9.50 beta
at ftp.ftp.connect(ftp.java:25)
at ftp.test.main(test.java:12)
这是 FTP 客户端:
package ftp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
public class ftp
{
public synchronized void connect(String host, int port, String user,
String pass) throws IOException {
Socket socket = new Socket(host, port);
// if (socket != null) {
// throw new IOException("SimpleFTP is already connected. Disconnect first.");
// }
// socket = new Socket(host, port);
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream()));
String response = reader.readLine();
if (!response.startsWith("220-")) {
throw new IOException(
"SimpleFTP received an unknown response when connecting to the FTP server: "
+ response);
} else System.out.println("1:"+response);
writer.write("user geek"+"\r\n");
writer.flush();
response= reader.readLine();
System.out.println("2"+response);
// response = reader.readLine();
/* if (!response.startsWith("331 ")) {
throw new IOException(
"SimpleFTP received an unknown response after sending the user: "
+ response);
}
else {*/
writer.write("PASS hello" +"\r\n");
writer.flush();
response= reader.readLine();
System.out.println("3"+response);
//}
response = reader.readLine();
/*if (!response.startsWith("230 ")) {
throw new IOException(
"SimpleFTP was unable to log in with the supplied password: "
+ response);
}
else {*/
System.out.println("4"+response);
//}
}
}
这是我连接的程序:
package ftp;
import java.util.Scanner;
public class test {
private static Scanner scan;
public static void main(String args[]) throws Exception
{
ftp s = new ftp();
s.connect("localhost",21,"geek", "hello");
}
}
我也试过写我的局域网ip而不是"localhost"
【问题讨论】:
-
如果您在客户端中使用
URLConnection,您可以大大简化您的代码。有关详细信息,请参阅this answer。这样你就不需要手动弄乱套接字了。