Я пытаюсь перевести свой сервер в «режим ожидания», но когда я использую следующий синтаксис:
new Thread() {
public void run() {
BufferedReader in;
String op;
try {
in = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
while ((op = in.readLine()) != null) {
if (op.equals("Elimina")) {
String tmp = in.readLine();
File file = new File("src/server/" + nomeAccount + "/" + tmp + ".txt");
file.delete();
}
}
} catch (IOException ex) {
System.out.println("Unable to read messages");
} finally {
try {
incoming.close();
} catch (IOException ex) {
System.out.println("Cannot close the socket");
}
}
}
}.start();
Программа зависает на while ((op = in.readLine()) != null)
, и клиент никогда не загружает ееGUI (и я не могу сделать никакой ввод, если он не загружается).Итак, я решил использовать этот синтаксис:
new Thread() {
@Override
public void run() {
BufferedReader in;
String op;
try {
in = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
while (in.ready()) {
op = in.readLine();
if (op.equals("Elimina")) {
String tmp = in.readLine();
contenutoTextArea.append("Ho eliminato la mail " + tmp + " \n");
textarea.setText(contenutoTextArea.toString());
File file = new File("src/server/" + nomeAccount + "/" + tmp + ".txt");
file.delete();
}
}
System.out.println("bbbbb");
} catch (IOException ex) {
System.out.println("Unable to read messages");
} finally {
try {
incoming.close();
} catch (IOException ex) {
System.out.println("Cannot close the socket");
}
}
}
}.start();
Проблема сейчас в том, что программа никогда не входит в цикл.Я пытался использовать while (true)
до этого, но там программа снова застряла.