4

ユーザーが telnet で接続し、「xxx に接続」コマンドを送信して ssh サーバーに接続できるプロキシ アプリケーションを開発しました。ssh クライアントとして JSch を使用します。

JSch jsch = new JSch();
Session session = jsch.getSession(username, ip, 22);
Channel channel = session.openChannel("shell");
InputStream inp = channel.getInputStream();
OutputStream oup = channel.getOutputStream();
MyReader myReader = new MyReader(userOutputStream, inp);
new Thread(myReader).start();
MyWriterThread myWriter = new MyWriter(userInputStream, oup);
new Thread(myWriter).start();

次に、これら 2 つの新しいスレッドで入力と出力をそれぞれ処理します。しかし、同時スレッドが多すぎるためにユーザー数が増加すると、プロキシのパフォーマンスが急速に低下しました。そこで、java.nio.channels.Selector と SocketChannel を使用してスレッド量を減らしたいと考えています。しかし、java.nio.* をサポートする ssh クライアントが見つかりません (例: JSch、Apache sshd、sshtools など)。Java nioをサポートする他のsshクライアントはありますか? または、入出力ストリームを Selector と SocketChannel に接続できるメソッドはありますか?

どうもありがとう!

4

2 に答える 2

3

2015 年現在、JSCH の nio フォークがあります。

https://github.com/lucastheisen/jsch-nio

私はそれを使用しましたが、スループットが大幅に向上します。

于 2015-08-15T23:49:28.983 に答える
2

Akkaを使用するParallec by eBayもあります。

于 2016-04-02T00:56:09.113 に答える