【发布时间】:2018-02-12 08:17:26
【问题描述】:
我创建了一组 FTPS 客户端,并尝试将其连接到我感兴趣的 ip 和端口。这是代码。
public class ftptest
{
public static void delete_files(String path, int n) throws IOException
{
String realpath;
for(int i=0 ; i<n ; i++)
{
realpath = path+i;
File file = new File(realpath);
FileUtils.cleanDirectory(file);
}
}
public static void main(String[] args) throws Exception
{
int number = 1;
String ip = "some_ip";
int port = 990;
FTPSClient[] client = new FTPSClient[number];
System.out.println(ip);
System.out.println("port = "+ port);
for(int i = 0; i < number; i++)
{
String path = "D:\\ftptest\\client"+i;
File file = new File(path);
file.mkdir();
client[i] = new FTPSClient(true);
client[i].setRemoteVerificationEnabled(false);
client[i].setTrustManager
(TrustManagerUtils.getAcceptAllTrustManager());
client[i].enterLocalPassiveMode();
client[i].setControlEncoding("UTF-8");
client[i].connect(ip,port);
System.out.println("Connected to " + ip + ".");
}
}
}
但不知何故,它在 client[i].connect(ip, port) 部分失败并出现错误
线程“main”java.net.ConnectException 中的异常:连接被拒绝:>connect 在 java.net.DualStackPlainSocketImpl.connect0(本机方法) 在 java.net.DualStackPlainSocketImpl.socketConnect(未知来源) 在 java.net.AbstractPlainSocketImpl.doConnect(未知来源) 在 java.net.AbstractPlainSocketImpl.connectToAddress(未知来源) 在 java.net.AbstractPlainSocketImpl.connect(未知来源) 在 java.net.PlainSocketImpl.connect(未知来源) 在 java.net.SocksSocketImpl.connect(未知来源) 在 java.net.Socket.connect(未知来源) 在 org.apache.commons.net.SocketClient.connect(SocketClient.java:182) 在 org.apache.commons.net.SocketClient.connect(SocketClient.java:203) 在 org.apache.commons.net.SocketClient.connect(SocketClient.java:296) 在 com.samsung.ftptest.ftptest.main(ftptest.java:66)
当它是 FTP 而不是 FTPS 时,它工作正常。有人知道为什么它不起作用吗?
谢谢。
【问题讨论】:
-
可能没有为 ftps 设置 ftp 服务器?
-
@Scary Wombat 感谢您的评论。那么你会假设代码本身没有问题吗?顺便说一句,我将 client[i] = new FTSClient("true") 更改为 client[i] = new FTSClient(true),删除了引号。
-
对不起,我没有为你做这个假设
-
“但不知何故失败了” 比如它是如何失败的?显示堆栈跟踪。
-
再次,您可以使用任何独立的 FTP(S) 客户端从同一台机器连接到同一端口吗? - 你为什么连你的隐式模式?
标签: java ftp ftps apache-commons-net