Прошу прощения, потому что я не могу придумать лучшего названия. I имеет клиент-серверную программу, написанную на Java, что сервер отправить строку, заканчиваться символом новой строки \n
клиента считываются из socket.getInputStream()
, если вход имеет следующую строку с помощью сканераJava - Использование чтения сканера из Socket InputStream
на стороне сервера
ServerSocket serverSocket = new ServerSocket(PORT);
Socket socket = serverSocket.accept();
PrintWrite send = new PrintWriter(socket.getOutputStream);
send.print("Server has succeeded to proccess your request \n" + show(ID));
send.flush();
Show (ID) - это функция, которая возвращает строку, которая уже содержит следующий символ строки. на стороне клиента
Socket socket = new Socket(HOST,PORT);
Scanner read = new Scanner(socket.getInputStream);
public Boolean ServerResponse(){
System.out.println("please wait");
Boolean result=false;
while(true){
if(read.hasNextLine()){
System.out.println("has next");
String msg = read.nextLine();
System.out.println(msg);
if(msg.contains("succeeded")){
result = true;
}
}else{
System.out.println("finished reading server respone");
return result;
}
}
}
, когда я попытался запустить это. "finished reading server respone"
никогда не печатается и нет has next
после того, как будет напечатана последняя строка, отправленная Server
, в которой предполагается, что символ следующей строки отсутствует. Однако блок else
никогда не выполняется. Странно, когда я заканчиваю Server
, он печатается. Может ли кто-нибудь объяснить это мне и что я должен сделать, что мне не нужно прерывать сервер для печати этой строки?
Значит, он возвращает только false, если есть вход, но без следующей строки. Без ввода он будет блокироваться? Спасибо – aukxn