我可以使用单个Jsch对象打开多个通道吗?

时间:2014-06-10 10:20:56

标签: java linux eclipse-plugin jsch

我有一个要求,我需要打开一个SftpChannel进行文件传输,一个exec channel执行远程系统上的命令。所以,我可以使用单个{{{{{{{ 1}}对象和单个jsch对象。如果我可以请给我一个小代码片段,或者请建议我有没有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

可以在一个会话中拥有多个开放频道。

  Channel chExec = session.openChannel("exec");
  Channel chSFTP = session.openChannel("sftp");

  chExec.setInputStream(System.in);
  chExec.setOutputStream(System.out);
  chSFTP.setInputStream(System.in);
  chSFTP.setOutputStream(System.out);

  chExec.connect();
  chSFTP.connect();

在上面的代码片段中,您将所有系统输入发送到两个频道,您可能不想这样做,因此您必须为一个或两个频道创建一个唯一的流。

此外,你可以在同一个会话中打开一个频道,使用它,关闭它,然后打开一个新频道。

Jsch不会自动关闭您的会话。您必须明确关闭它们。有关关闭频道和会话的说明,请参阅this answer