我正在尝试连接到FTP站点并上传/下载文件。我能够通过浏览器和FileZilla连接。所以我肯定知道它有效。但是当我尝试通过我的java程序访问它时,我得到了这个异常。如有任何帮助,我们将不胜感激 我的Java类(构造函数)
public TriFtpClient() {
tri = new FTPClient();
String host = InkAndTonerProperties.getSingleton().getProperty(
"ftpDomain");
int reply;
try {
tri.addProtocolCommandListener(new PrintCommandListener(
new PrintWriter(System.out), true));
tri.connect(host, 21);
log.debug("default port = " + tri.getDefaultPort());
reply = tri.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
tri.disconnect();
log.error("Exception in connecting to FTP Server");
}
tri.login(
InkAndTonerProperties.getSingleton().getProperty(
"ftpUserId"), InkAndTonerProperties.getSingleton()
.getProperty("ftpPassword"));
tri.enterLocalPassiveMode();
} catch (IOException e) {
if (tri.isConnected()) {
log.error("it is connected.");
try {
tri.disconnect();
} catch (IOException f) {
// do nothing
}
}
log.error("Failed to connect and login", e);
}
}
//上传方法
//下载方法
堆栈跟踪
java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
答案 0 :(得分:1)
启用FTPClient的调试日志,并检查进入被动模式时是否发生超时。 大多数情况下,进入被动模式时会发生连接超时。
如果此时连接超时,请在下面的日志中检查IP:
Entering Passive Mode (xxx,xxx,xxx,xxx,xxx,xxx)
如果第一个块以10或172或192开头,则服务器在进入被动模式时要求使用专用IP进行连接。您必须更改服务器端的被动地址才能使用公共IP地址