问题:我似乎无法从缓冲的 reader.readline() 中摆脱“无限循环/块”。它通过它一次,然后在第二次从 while 循环中出现后就挂在那里。
这是我的代码:
public void sendCommand(String command){
{
String line;
try{
while((line = consoleOutput.readLine())!= null)
{
System.out.println(line);
if(line.equals("rkscli:") || line.equals("password :") || line.equals("Please login: ")){
pin.write((command + "\n\r").getBytes());
}
}
}
我正在使用 nilbot 使用的方法:这里 我正在这样做,我试图通过 shell 发送命令。
问题:
我想要完成的是让程序等到服务器准备好接收更多命令(等待提示“rkscli”,因为某些命令需要更多时间)。我该怎么做才能做到这一点?我目前正在使用管道输入/输出方法。
其他信息:
服务器会在提示之前给我“”(带有换行符的空字符串)。在其中一些之后,它会给我提示。我还注意到,如果我更改代码使其看起来像这样:
public void sendCommand(String command){
{
String line;
try{
while((line = consoleOutput.readLine())!= null)
{
System.out.println(line);
pin.write("\r\n".getBytes());//Added line
if(line.equals("rkscli:") || line.equals("password :") || line.equals("Please login: ")){
pin.write((command + "\n\r").getBytes());
}
}
}
它不会在 bufferedReader.readline() 处挂起,但会通过并跳过写入(它似乎没有向 shell 写入任何内容,有时它会且不可预测)
关于我能做什么的任何想法?