java程序死了telnet还有用吗_java实现telnet连接操作 改进
開張了,先從改進(jìn)做起。
實(shí)際telnet程序,執(zhí)行完命令后,一般不是直接讀取readUntil "#"或“$$”就能搞定的。
程序中有可能有其他打印,還有如下一些場(chǎng)景要考慮。
一般有成功的返回。 比如 end of execute fun
有找不到的返回。 ? 比如 symbol not found
還有就是不返回,比如 設(shè)置變量 ? ?gVarAbc 1
對(duì)于telnet 中再嵌入telnet 場(chǎng)景:
實(shí)際上每輸入一個(gè)shell命令,實(shí)際上2個(gè)telnet都會(huì)返回結(jié)果,并且不能保證哪個(gè)telnet再前面打印。
比如按照回車,看到shell是一個(gè)#,如果用程序讀,則是2個(gè)#
對(duì)于login成功失敗,是不能靠#的,必須區(qū)分成功與失敗的模式,之后還有過濾多余的#。避免直接readUntil("#")
所以需要修訂 成如下程序:
public?String?readUntil(String strSucc,String strFail)?{
try?{
char?lastChar=pattern.charAt(pattern.length()?-?1);
StringBuffer?sb=newStringBuffer();
char?ch=?(char)?in.read();
while?(true)?{
sb.append(ch);
if?(ch==?lastChar)?{
if?(sb.toString().endsWith(strSucc))?{
//找到成功的模式返回
return?sb.toString();
}
if(null !=strFail
) {
if?(sb.toString().endsWith(strFail))?{
//找到失敗的模式返回
return?sb.toString();
}
}
}
ch=?(char)?in.read();
//??????????????System.out.print(ch);
}
}?catch?(Exception?e)?{ 0
e.printStackTrace();
returnsb.toString()
; ? ? //已經(jīng)讀空了,返回,給程序處理。
}
return?null;
}
總結(jié)
以上是生活随笔為你收集整理的java程序死了telnet还有用吗_java实现telnet连接操作 改进的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 常用的api_Java中常用的
- 下一篇: java理解程序逻辑_使用java理解程