中断等待控制台输入java的无限循环
我有一个使用org.apache.commons.net.telnet.TelnetClient的Java telnet代码 我通过以下代码从telnet服务器读取“login:”来提供登录信息中断等待控制台输入java的无限循环,java,telnet,Java,Telnet,我有一个使用org.apache.commons.net.telnet.TelnetClient的Java telnet代码 我通过以下代码从telnet服务器读取“login:”来提供登录信息 in = telnet.getInputStream(); char lastChar = pattern.charAt(pattern.length()-1); StringBuffer sb = new StringBuffer(); char ch = (char
in = telnet.getInputStream();
char lastChar = pattern.charAt(pattern.length()-1);
StringBuffer sb = new StringBuffer();
char ch = (char) in.read();
while (true) {
System.out.print(ch);
sb.append(ch);
if (ch == lastChar) {
if (sb.toString().endsWith(pattern)) {
return sb.toString();
}
}
ch = (char) in.read();
i++;
// System.out.print(i);
}
但当我给出一个无效的telnet服务器,提示例如“username:”时,它会导致无限循环等待“login:”in“in.read();”
由于它在.read()中等待,我不能在while(_flag)中使用任何标志或其他标志。
有谁能为我提供一个解决方案,当it应用程序接收到无效登录时避免无限循环
boolean
变量作为标志、while
循环和break
来控制这个单独的线程中断该单独线程中的循环
系统。退出(0)
,所以程序结束您有成功标准(telnet服务器发送
登录:
),但没有失败标准。因此,循环可能永远运行
发生故障时,应如何打破循环?考虑一个条件。可能:“尝试20秒”或“登录:
在前100个字符内未发送”
您也可以逐行阅读,并期望服务器发送的第一行(在特定时间间隔内)等于
登录:
,否则退出时会显示错误消息(这就是我在您的情况下所做的)请正确格式化您的代码。当您可以使用StringBuilder时,请不要使用StringBuffer。