我正在尝试编写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;
有人可以帮帮我吗?非常感谢你的帮助。
答案 0 :(得分:1)
227
对PASV
命令的响应中的数字不是端口号。
格式为:
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)。