【问题标题】:Redirecting real-time SSH Console Output to JFrame将实时 SSH 控制台输出重定向到 JFrame
【发布时间】:2013-07-30 12:25:23
【问题描述】:

我正在调用 plink 以使用来自 Java 的 ssh 在远程位置执行一个 shell 脚本。当我从 ssh 控制台取回缓冲数据时,我想将它们实时写入 JTextField 等(后端代码执行大约 10 分钟并不断生成一些字符串)。

在执行此操作时,执行会挂起,直到后端代码完全执行并立即显示所有输出。如果我这样做是为了直接 Eclipse 控制台,它会在执行时逐行写入。有什么建议吗?

    //JFrame Component
    public GUIApplicationConsoleFrame(String title) {
    dispFrame = new JFrame(title);
    opArea = new JTextArea("");
    ipField = new JTextField();


    // Writing Output, redirected to JTextArea
    if (std.available () > 0) {
            value = std.read ();
            out((char) value);

            while (true) {
                value = std.read ();
                out((char) value);
                if (<terminating condition>)
                    if (++count==2)
                        break;
                Thread.sleep(3);
            }
        }

谢谢, 艾莉亚

【问题讨论】:

    标签: java ssh console real-time output


    【解决方案1】:

    您应该将 ssh 放在后台线程中并从中更新 JTextArea。这样你就不会阻塞事件派发线程,即使后台(工作)线程没有终止,它也能更新图形界面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-28
      • 2013-11-14
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多