java实现telnet连接操作 改进

开张了,先从改进做起。

实际telnet程序,执行完命令后,一般不是直接读取readUntil "#"或“$$”就能搞定的。 

   程序中有可能有其他打印,还有如下一些场景要考虑。


      一般有成功的返回。 比如 end of execute fun

      有找不到的返回。   比如 symbol not found

      还有就是不返回,比如 设置变量    gVarAbc 1

  

      对于telnet 中再嵌入telnet 场景:

                 实际上每输入一个shell命令,实际上2个telnet都会返回结果,并且不能保证哪个telnet再前面打印。

                比如按照回车,看到shell是一个#,如果用程序读,则是2个# 

                 对于login成功失败,是不能靠#的,必须区分成功与失败的模式,之后还有过滤多余的#。避免直接readUntil("#")




所以需要修订 成如下程序:

  1.     public String readUntil(String strSucc,String strFail) {  
  2.         try {  
  3.             char lastChar = pattern.charAt(pattern.length() - 1);  
  4.             StringBuffer sb = new StringBuffer();  
  5.             char ch = (char) in.read();  
  6.               
  7.             while (true) {  
  8.                 sb.append(ch);  
  9.                 if (ch == lastChar) {  
  10.                     if (sb.toString().endsWith(strSucc)) {   //找到成功的模式返回 
  11.                         return sb.toString();  
  12.                     }  
  13.                    if(null !=strFail ) {
  1.                          if (sb.toString().endsWith(strFail)) {  //找到失败的模式返回
  2.                              return sb.toString();  
  3.                          }  
  4.                     }


  1.                 }  
  2.                 ch = (char) in.read();  
  3. //              System.out.print(ch);  
  4.             }  
  5.         } catch (Exception e) { 0 
  6.             e.printStackTrace(); 
  7.            return  sb.toString() ;     //已经读空了,返回,给程序处理
  8.         }  
  9.         return null;  
  10.     }



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值