java - 我可以使用一个 Jsch 对象打开多个 channel 吗?

标签 java linux eclipse-plugin jsch

我有一个要求,我需要打开一个 SftpChannel 用于文件传输和一个 exec channel 以在远程系统上执行命令。那么,我可以打开这些 channel 使用单个 jsch 对象和单个 session 对象。如果可以,请给我一个小代码片段,或者建议我是否有其他方法可以做到这一点?

最佳答案

可以在单个 session 中打开多个 channel 。

  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();

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

此外,您可以打开一个 channel ,使用它,关闭它,然后打开一个新 channel ,所有这些都在同一个 session 中。

Jsch 不会自动关闭您的 session 。您必须明确关闭它们。参见 this answer有关关闭 channel 和 session 的说明。

关于java - 我可以使用一个 Jsch 对象打开多个 channel 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24138509/

相关文章:

java - 泛型类型和通配符类型的区别

linux - BASH - tr grep 结果换行

java - 第谷构建 : Depencency plugins are deployed as flat directory instead of jar

java - 工具在 Eclipse 插件开发中延迟输出

java - 从一个 ArrayList 转移到另一个

java - 如何从 DIalogFragment 调用 TimePicker?

regex - 从 ls w/sed 的长输出中删除权限?

c - 关于linux设备驱动中的write函数

java - 使用类加载器 AntClassLoader[] 找不到 ant taskdef 类

java - 当 JSONArray 给出空值时显示文本 - android