【发布时间】:2013-04-02 13:06:09
【问题描述】:
我被 FTP 客户端 java 实现卡住了。 我所要做的就是连接到 FTP 服务器并将一个文件传输到服务器。
我设法与 ftp 服务器建立连接(参见下面的代码),然后我使用 PASV 命令进入被动模式。现在我不知道下一步该做什么。我尝试在 PASV 命令后创建一个新套接字并将其连接到 FTP 服务器端口 20,但没有成功。
我的问题是如何在建立连接时启动文件传输? (我的想法是与20端口建立连接并执行STOR命令,但我不知道怎么做。
您有什么想法或有用的建议吗?
顺便说一句。我必须在不使用 FTPClient 之类的 java 类的情况下实现这一点
这是我的代码:
public class FTPtest {
Socket socket;
PrintWriter pw;
BufferedReader input;
String info = "";
public FTPtest(){
try{
socket = new Socket("some_ftp_server", 21);
logUsername();
closeEverything();
}
catch(IOException ioe){
System.out.println("error");
}
}
public void logUsername()throws IOException{
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
pw = new PrintWriter(socket.getOutputStream());
//user
pw.write("USER some_user\n");
pw.flush();
System.out.println(input.readLine());
//pass
pw.write("PASS some_pass");
pw.flush();
System.out.println(input.readLine());
System.out.println(input.readLine());
//PASV
pw.write("PASV");
pw.flush();
}
public void closeEverything() throws IOException{
input.close();
pw.close();
socket.close();
}
public static void main(String[]args){
new FTPtest();
}
}
【问题讨论】:
-
你想自己做一个FTP客户端吗?因为如果您只是在寻找一种连接到 ftp 服务器并进行一些操作的方法,您可以查看Apache Commons-Net,它具有集成的 FTP 客户端类
-
我想自己做FTP客户端,不使用任何FTP客户端类。