2013-07-25 270 views
3

我使用jsch進行sftp文件傳輸。當我使用sftp命令通過設置緩衝區大小512(-B選項)sftp B 512 [sftp服務器名稱]並調用put命令發送文件時,我可以以8.0MBPS傳輸文件。 (常規速度3.0MBPS)。如何增加jsch緩衝區大小?

當我在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

退房Jsch(1.50)的新版本,它變得更快下載。

0

它可能工作,但我不確定。我在jsch代碼庫中看到了它。 你可以試試看:

getSession().setConfig("max_input_buffer_size", "increased_size");