我正在通过sftp(JSCH)连接到FTP服务器。
每当我使用端口21连接到FTP服务器时,它始终挂在session.connect()上。
它不会引发任何异常。但是当我使用其他端口时。它有效,并引发异常。
有什么办法可以捕捉到错误吗?
这是我的代码示例。
public static void main(String[] args) throws SftpException {
JSch jsch = new JSch();
try {
Session session = jsch.getSession("username", "host", 21);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword("password");
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp channelSftp = (ChannelSftp) channel;
session.disconnect();
channelSftp.disconnect();
} catch (JSchException e) {
log("Cannot make connection to FTP server ");
e.printStackTrace();
}
}
端口22是SFTP的默认端口吗?在端口21上运行的FTP服务器将不知道如何协商安全FTP的会话。基本上,SFTP是基于SSH的FTP。
编辑:问题是,它无限期地等待谈判完成。这是墨西哥的僵局,双方都没有放弃。session.setTimeout()
在之前呼叫session.connect()
或呼叫session.connect(timeout)
,并使用一些合适的值(3-5秒)。我相信超时单位是毫秒。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句