java - FTP客户端java实现

标签 java ftp

我被 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 客户端库。 至于 PASV 请求 - 服务器响应它返回编码的 IP 地址和端口,您应该连接到该地址以进行数据连接。

关于java - FTP客户端java实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15930110/

相关文章:

ftp - 未知命令 - LFTP

java - 用于 Java 的 Perl 的 Net::FTPSSL 模拟或如何在 Java 中使用 FTP over SSL

java - 两个具有相同编号的构造函数。参数但不同的数据类型

java - 计算器和使用数组

bash - 在 bash 中通过 ftp 从列表上传文件

java - 压缩存在于一个 FTP 位置的文件并直接复制到另一个 FTP 位置

java - svn 导致 eclipse 中的构建错误

java - ScrollPane javafx自动滚动(将vvalue设置为1.0)仅滚动到最后一项之前的项目

java thread.sleep() 在我测试时不让处理器时间可供其他线程使用

python - 如何使用 Python ftplib 获取 FTP 文件的修改时间