栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

永不结束使用jSch读取服务器响应

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

永不结束使用jSch读取服务器响应

没有输入时,通道不会自行关闭。阅读完所有数据后,请尝试自己关闭它。

while (true) {    while (inputStream.available() > 0) {        int i = inputStream.read(buffer, 0, 1024);        if (i < 0) { break;        }        System.out.print(new String(buffer, 0, i));//It is printing the response to console    }    System.out.println("done");    channel.close();  // this closes the jsch channel    if (channel.isClosed()) {        System.out.println("exit-status: " + channel.getExitStatus());        break;    }    try{Thread.sleep(1000);}catch(Exception ee){}}

您唯一要使用不会手动关闭通道的循环是在您收到用户的交互式键盘输入时。然后,当用户执行“退出”操作时,该操作将更改通道的“
getExitStatus”。如果您的循环为while(channel.getExitStatus()== -1),则当用户退出时循环将退出。
在检测到退出状态后,您仍然需要断开通道并自己进行会话

它没有在示例页面上列出,但是JSCH在其站点上托管了一个交互式键盘演示。
http://www.jcraft.com/jsch/examples/UserAuthKI.java

即使是我的演示程序,我用来连接到AIX系统而不更改任何代码的演示程序,在退出Shell时也不会关闭!

在远程会话中键入“退出”后,我必须添加以下代码才能使其正确退出:

     channel.connect();     // My added pre begins here     while (channel.getExitStatus() == -1){        try{Thread.sleep(1000);}catch(Exception e){System.out.println(e);}     }     channel.disconnect();     session.disconnect();     // My Added pre ends here   }   catch(Exception e){     System.out.println(e);   }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449856.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号