0

JSCH の使用とコマンドのシェルへの送信に問題があります。

コンソール 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) {
    }

ただし、「送信」ボタンを押しても何も起こりません。私は明らかに単純なものが欠けています

4

1 に答える 1

1

PrintStream を Private として宣言する必要があることがわかったので、

 private PrintStream print;

次に、最初の PrintStream を次のように作成した後

 print = new PrintStream(pop); 

新しいものを作成するのではなく、プログラムの他の部分でアクセスできたので、最終的に送信コマンドで必要だったのは

 String send = jServerInput.getText();
 print.println(send);
于 2013-10-21T10:14:04.343 に答える