【问题标题】:Jsch: Is there way to send Control CharacterJsch:有没有办法发送控制字符
【发布时间】:2012-04-19 04:59:45
【问题描述】:

我正在使用 Jsch 连接 sshd 服务器,我是这方面的新手。我成功发送了非控制字符,例如 a、b ...等等。但是,我需要发送“Esc”键命令(控制字符)来执行特定任务。根据link,我尝试了几种方法(通过“27”、“0033”、“0x1b”和“^[”)但没有奏效。 我找到了一个link 来使用 sshj。有没有办法使用 Jsch 发送控制字符?

谢谢 M.F.H

【问题讨论】:

    标签: java ssh jsch


    【解决方案1】:

    跟着sn-p怎么样?

    byte[] esc = { (byte)0x1b }; 
    out.write(esc);
    out.flush();
    

    使用JSch的JCTerm有关注definitions

    byte[] ENTER = {(byte)0x0d};
    byte[] UP = {(byte)0x1b, (byte)0x4f, (byte)0x41};
    byte[] DOWN = {(byte)0x1b, (byte)0x4f, (byte)0x42};
    byte[] RIGHT = {(byte)0x1b, (byte)0x4f, (byte)0x43};
    byte[] LEFT = {(byte)0x1b, (byte)0x4f, (byte)0x44};
    ....
    

    【讨论】:

    • 谢谢。我已经弄清楚了这个问题。我正在使用 JSCH 向 VT100 终端发送字符。在代码中,所有输入都转换为字节数组。 ANSI/VT100 终端仅接受 PLAIN ASCII 字符代码 (INT) 作为命令/控制字符。因此,控制 ASCII 字符不能作为字节数组发送。例如,ESC 的 ASCII 码是 27。如果 VT100 终端需要 ESC 命令,那么 SSH Session 输入流中必须写入 27(INT)。
    【解决方案2】:

    谢谢。我以不同的方式解决了这个问题。我正在使用 JSCH 向 VT100 终端发送字符以执行特定任务。在代码中,所有输入都转换为字节数组,但 ASCII 控制字符不能作为字节数组发送到 VT100 终端。根据post,我必须将控制字符作为 ASCII 码 (INT) 发送。例如,如果 VT100 终端需要 ESC 命令,则 SSH Session 输入流中必须写入 27(INT)。 ESC 的 ASCII 码是 27。(之前,我将 27 作为字符串发送并转换为字节数组。)

    【讨论】:

      猜你喜欢
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      相关资源
      最近更新 更多