【问题标题】:Implementing FTP in Java - Connecting to port specified in 227 response to PASV command在 Java 中实现 FTP - 连接到 PASV 命令的 227 响应中指定的端口
【发布时间】:2015-10-19 03:14:48
【问题描述】:

我正在尝试对 FTP 客户端进行编程,但我似乎无法连接到被动端口。我想最终列出目录并下载一个文件,但我也不知道该怎么做。

这是我的程序打印出来的。

PASV
227 Entering Passive Mode (73,13,156,129,217,103).
Passive Ports: 73,13,156,129,217,103
Failed to connect to port: 73
Failed to connect to port: 13
Failed to connect to port: 156
Failed to connect to port: 129
Failed to connect to port: 217
Failed to connect to port: 103
"/home/daniel">>

case 227://PASSIVE MODE
    String psPorts = lastMessage.substring(lastMessage.indexOf('(')+1,lastMessage.indexOf(')'));
    System.out.println("Passive Ports: " + psPorts);
    for(String i : psPorts.split(",")){
        Ports.add(Integer.parseInt(i));
    }

    for(int i: Ports){
        try{
            pSk = new Socket("webserver",i);
            break;
        }catch(Exception e){
            System.out.println("Failed to connect to port: " + i);
        }
    }
    break;

有人可以帮帮我吗?非常感谢您的帮助。

【问题讨论】:

    标签: java sockets ftp network-programming


    【解决方案1】:

    227PASV 命令的响应中的数字不是端口号。

    格式为:

    IP_A,IP_B,IP_C,IP_D,PORT_HI,PORT_LO
    

    所以你需要连接到

    pSk = new Socket("IP_A.IP_B.IP_C.IP_D", PORT_HI<<8 + PORT_LO);
    

    以上是伪代码(我不做Java)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-08
      • 2018-02-12
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-27
      • 2011-12-30
      相关资源
      最近更新 更多