Java 无法将文件从外部ip传输到proftpd服务器

Java 无法将文件从外部ip传输到proftpd服务器,java,ftp,Java,Ftp,我正在制作一个基本的FTP传输应用程序,可以与我的ProFtpd服务器一起使用 在本地网络上,以下代码起作用。但是,当我使用此代码并尝试通过外部IP连接时,(是的,我将IP更改为我的外部IP),我得到错误: sun.net.ftp.FtpProtocolException:端口:500非法端口命令,EPSV全部生效 此外,在浏览器中连接到ftp服务器会导致外部IP延迟一两分钟,但我不知道这是否相关 这是我的密码: URL url=new URL("ftp://"+username+":"+pas

我正在制作一个基本的FTP传输应用程序,可以与我的ProFtpd服务器一起使用

在本地网络上,以下代码起作用。但是,当我使用此代码并尝试通过外部IP连接时,(是的,我将IP更改为我的外部IP),我得到错误:

sun.net.ftp.FtpProtocolException:端口:500非法端口命令,EPSV全部生效

此外,在浏览器中连接到ftp服务器会导致外部IP延迟一两分钟,但我不知道这是否相关

这是我的密码:

URL url=new URL("ftp://"+username+":"+password+"@"+ip+path+recipient+"/"+sendMe.getName());
    URLConnection con=url.openConnection();
    System.out.println("connected");

    FileInputStream input=new FileInputStream(sendMe);
    BufferedOutputStream output=new BufferedOutputStream(con.getOutputStream());
    System.out.println("output Stream");

    int c;
    int size=0;
    TransferDialog transfer=new TransferDialog("0 bytes processed");

    while ((c = input.read()) != -1) {
        output.write(c);
        size++;
        transfer.changeText(size+" bytes processed");
        System.out.println(size);
    }

    if (input != null) {
        input.close();
    }
    if (output != null) {
        output.close();
    }
    System.out.println("Uploaded");

运行此操作时,将出现错误而不是“输出流”消息。任何帮助或建议都将不胜感激

看起来您正试图通过您的外部IP进行访问,而这两者之间可能有防火墙。您需要启动一个专门用于处理防火墙之类的连接(因为所有连接都是在被动模式下启动的客户端)


这在您内部执行时起作用,因为您的客户端和服务器之间没有防火墙。请记住防火墙(默认配置)会阻止所有非客户端启动的TCP连接。

这不是一个真正的java问题,这是关于如何配置FTP服务器以正常工作的问题,更多的是关于serverfault.com的问题(减去java位)。谢谢!你知道如何编辑代码,将其从主动连接更改为被动连接吗?@Jon你还没有向我们展示代码的这一部分,但我相信你可以通过查找找到答案。这会让你朝正确的方向走。@Jon:看到了吗