我开发了一个代理应用程序,用户可以通过它远程登录并发送“connect to xxx”命令连接到ssh服务器。我使用JSch作为我的ssh客户端:
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();
然后分别在这两个新线程中处理输入和输出。但是,对于太多并发线程,代理的性能随着用户数量的增加而迅速下降。所以我想使用java.nio.channels.Selector和SocketChannel来减少线程数量。但是我找不到支持java.nio。*的ssh客户端(例如:JSch,Apache sshd,sshtools等)。是否有其他支持java nio的ssh客户端?或者是否有一些方法可以将输入/输出流与Selector和SocketChannel连接?
非常感谢!
答案 0 :(得分:3)
答案 1 :(得分:2)