Androidのアプリ開発関連のブログ

SSHクライアントの制作をちょっとやった

SSHクライアントの制作をちょっとやったが、
SFTPの時と同じようにJSCHでセッションをconnectして、
ssh=(ChannelShell)sess.openChannel("shell");
InputStream s2c=ssh.getInputStream();
ssh.connect();
てな感じで、openChannel("shell")でChannelShellを取得。
チャンネルをconnectする前にgetInputStream()で取れるInputStreamを読むことでサーバーからの出力を読み取ることができる感じ。
まだ試していないが、getOutputStream()で取れるOutputStreamから入力ができるはず。
JavaのInputStreamとOutputStreamは、どっちが入力でどっちが出力だかわかりにくい・・・

サーバーからの出力(InputStream)は繋いでる間は切断されないのでread()は-1にならない。
最後に制御コードが来るとかもないようなので、1byteずつ処理するしか無いと思うのでUTF以外の文字コードに対応させようと思ったらめんどそう。
まずUTF-8で作って、他の文字コードは対応できそうだったら考えることにする。

nanoとかtopみたいな画面が切り替わるコマンドだとかは何か制御コードが飛んでくるものだと思うのだが、
今の所ログイン処理までしか作って無くて、そこまででは改行と復帰以外の制御コードは確認できなかった。
次は入力をできるようにしてnanoとかコマンド送ってレスポンスを確認してみようと思う。
nanoなんかはターミナルの画面全体に表示されるが、サイズはどうやって決定してるんだろ?
と思ったが、setPtySize(int col, int row, int wp, int hp)でサイズを指定できるみたいだ。wpとhpはpxぽいが、colとrowは文字数なのかな?

入力はEditTextとかなしでキーボード常時表示にして入力を取得できないか?
という方向で考えている。