java程序死了telnet还有用吗_java实现telnet连接操作 改进
開張了,先從改進做起。
實際telnet程序,執行完命令后,一般不是直接讀取readUntil "#"或“$$”就能搞定的。
程序中有可能有其他打印,還有如下一些場景要考慮。
一般有成功的返回。 比如 end of execute fun
有找不到的返回。 ? 比如 symbol not found
還有就是不返回,比如 設置變量 ? ?gVarAbc 1
對于telnet 中再嵌入telnet 場景:
實際上每輸入一個shell命令,實際上2個telnet都會返回結果,并且不能保證哪個telnet再前面打印。
比如按照回車,看到shell是一個#,如果用程序讀,則是2個#
對于login成功失敗,是不能靠#的,必須區分成功與失敗的模式,之后還有過濾多余的#。避免直接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()
; ? ? //已經讀空了,返回,給程序處理。
}
return?null;
}
總結
以上是生活随笔為你收集整理的java程序死了telnet还有用吗_java实现telnet连接操作 改进的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 常用的api_Java中常用的
- 下一篇: Java虚拟机调用jni_JNI攻略之十