JSCH Channel Shell,输入/输出

时间:2013-10-21 08:55:39

标签: java shell netbeans jsch

我在使用JSCH并向shell发送命令时遇到了一些问题。

我有一个控制台GUI窗口设置,system.out已被重定向到TextArea,这可以正常工作,但我无法输入任何命令

以下是会话的连接代码

    this.channel=session.openChannel("shell");

    PipedInputStream pip = new PipedInputStream(40);
    this.channel.setInputStream(pip);

    PipedOutputStream pop = new PipedOutputStream(pip);
    PrintStream print = new PrintStream(pop);

    this.channel.setOutputStream(System.out);

    print.println("ls"); 

    this.channel.connect(3*1000);

这很好用,并运行ls命令并显示输出,但是如果我现在想要运行更多命令,则这些命令不起作用。

我有一个TextBox设置和一个“发送”按钮,可以将这些命令发送到下面编码的服务器。

    String send = jServerInput.getText();

    try {
        PipedInputStream pip = new PipedInputStream(40);
        //this.channel.setInputStream(pip);

        PipedOutputStream pop = new PipedOutputStream(pip);
        PrintStream print = new PrintStream(pop);
        //this.channel.setOutputStream(System.out);
        //System.out.println(send);
        print.println(send);
    } catch (IOException iOException) {
    }

然而点击“发送”按钮什么都不做。我显然缺少一些简单的东西

1 个答案:

答案 0 :(得分:1)

我发现我需要将PrintStream声明为私有

 private PrintStream print;

然后我创建了初始PrintStream为

 print = new PrintStream(pop); 

我能够在程序的其他部分访问它而不是创建新的部分,所以我最后在发送命令中需要的是

 String send = jServerInput.getText();
 print.println(send);