2012-04-16 12 views
1

私はsshdサーバに接続するためにJschを使用しています。私はこのエリアで新しくなっています。私は正常に、a、b ...などの非制御文字を送信します。ただし、特定のタスクを実行するには、「Esc」キーコマンド(制御文字)を送信する必要があります。 linkによれば、私はいくつかの方法で( "27"、 "0033"、 "0x1b"、 "^ [")を渡していましたが、うまくいきませんでした。 私はlinkがsshjを使用することを発見しました。 Jschを使って制御文字を送る方法はありますか?Jsch:制御文字を送信する方法はありますか

ありがとうM.F.H

答えて

2

次のスニペットについてはどうですか?

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}; 
.... 
+1

ありがとう。私はこの問題を理解しました。 JSCHを使用してVT100端末に文字を送信しています。コードでは、すべての入力がバイトの配列に変換されます。 ANSI/VT100ターミナルでは、コマンド/制御文字のPLAIN ASCII文字コード(INT)のみを受け入れます。したがって、制御ASCII文字 バイトの配列として送信することはできません。 たとえば、ESCのASCIIコードは27です。VT100端末にESCコマンドが必要な場合は、27(INT)をSSHセッション入力ストリームに書き込む必要があります。 – MFH

0

感謝を以下ました。私はこの問題を少し違った方法で考え出しました。私は特定のタスクを実行するためにJSCHを使用してVT100端末に文字を送信しています。コードでは、すべての入力がバイト配列に変換されますが、ASCII制御文字はバイト配列としてVT100端末に送信できません。 postによれば、制御文字をASCIIコード(INT)として送信する必要があります。そのような場合、VT100端末にESCコマンドが必要な場合は、27(INT)をSSHセッション入力ストリームに書き込む必要があります。 ESCのASCIIコードは27です(前に、私は文字列として27を送り、バイトの配列に変換しました)。

関連する問題