- метод 1, который продолжает читать из System.in и отправлять его через Socket
- Метод 2, который читает из System.in только тогда, когда в нем возникает ошибка.
Изменить:
Метод 1 постоянно получает сообщения из сокета, а метод 2 отправляет все, что я печатаю на консоли, через Socket. Но когда получение сообщений не удается, я хочу просто спросить, хочет ли клиент подключиться к другому серверу, но метод 1 уже прочитал строку, поэтому первый раз, когда я печатаю, я перехожу к теперь бесполезному методу 1, тогда вторая строка идет правильно к методу2
Что я могу сделать в этом случае?
Наблюдение: я знаю, что в этом примере я могу сделать средство чтения свойством класса. Сделано так, чтобы было легче понять
public class App {
public void method1() {
new Thread(() -> {
String line;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
while (!socket.isClosed() && line = bufferedReader.readLine() != null) {
//Keeps reading from the System.in and sending to the Socket
}
}).start();
}
public void method2() {
try {
//Keeps receiving messages from the Socket
} catch (Exception e) {
socket.close();
String line;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
line = bufferedReader.readLine();
//Asks if the user want to connect to other server
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... le-threads
Мобильная версия