我正在使用jsch进行sftp文件传输。当我使用sftp命令发送文件时,通过设置缓冲区大小512(-B选项)sftp B 512 [sftp服务器名称]并调用put命令,我可以传输8.0MBPS的文件。 (常规速度为3.0MBPS)。
当我在java中使用jsch api进行相同的文件传输时,我只得到2.6MBPS。是否有任何选项可以增加jsch中的缓冲区大小或提高jsch的速度?
这是我的代码......
Channel channel = null;
ChannelSftp channelSftp = null;
log("preparing the host information for sftp.");
try {
JSch jsch = new JSch();
session = jsch.getSession(username, hostname, port);
session.setPassword(password);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
System.out.println("Host connected.");
channel = session.openChannel("sftp");
channel.connect();
log("sftp channel opened and connected.");
channelSftp = (ChannelSftp) channel;
channelSftp.cd(SFTPWORKINGDIR);
File f = new File(fileName);
channelSftp.put(new FileInputStream(f), f.getName());
log("File transferred successfully to host.");
} catch (Exception ex) {
System.out.println("Exception found while transfer the response.");
ex.printStackTrace();
} finally{
channelSftp.exit();
log("sftp Channel exited.");
channel.disconnect();
log("Channel disconnected.");
session.disconnect();
log("Host Session disconnected.");
}
答案 0 :(得分:0)
查看更新版本的Jsch(1.50),下载速度更快。