FTPClient client = new FTPClient();
FileInputStream fis = null;
try {
client.connect("32.178.10.121");
client.login("XXX", "XXX");
//
// Create an InputStream of the file to be uploaded
//
String filename = "Touch.dat";
fis = new FileInputStream(filename);
//
// Store file to server
//
client.storeFile(filename, fis);
client.logout();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fis != null) {
fis.close();
}
client.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
我已经尝试了这个,但每次它给出时间超出约束异常,并通过其他方式我成功连接但是从这里可能是理由。
这是堆栈跟踪:
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at org.apache.commons.net.DefaultSocketFactory.createSocket(DefaultSocketFactory.java:53)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:162)
at org.apache.commons.net.SocketClient.connect(SocketClient.java:250)
at forTesting.FileUploadDemo.main(FileUploadDemo.java:15)
答案 0 :(得分:3)
首先尝试设置代理详细信息,如下所示
FTPClient ftp = new FTPHTTPClient(proxyHost, proxyPort, proxyUser, proxyPassword);
然后尝试连接,如果错误消失,请告诉我。
如果错误仍然存在,请检查FTP服务器的防火墙设置。还尝试使用某些GUI工具(如Filezilla)连接系统以连接到服务器。
答案 1 :(得分:1)
如果您位于防火墙或代理服务器后面,可能需要尝试使用PASV模式。看看here:
在客户端位于防火墙后面且无法访问的情况下 接受传入的TCP连接,可以使用被动模式。在这 模式,客户端使用控制连接发送PASV命令 服务器然后接收服务器IP地址和服务器端口 来自服务器的编号,然后客户端使用该编号来打开 从任意客户端端口到服务器IP地址的数据连接 收到的服务器端口号。