- Methode1, die ständig aus System.in liest und über Socket sendet
- Methode2, die nur aus System.in liest, wenn darin ein Fehler auftritt
Bearbeiten:
Die Methode1 ist Ich erhalte ständig Nachrichten vom Socket und Methode 2 sendet alles, was ich auf der Konsole eingebe, über den Socket. Aber wenn der Empfang von Nachrichten fehlschlägt, möchte ich nur fragen, ob der Client eine Verbindung zu einem anderen Server herstellen möchte, aber die Methode1 hat die Zeile bereits gelesen, sodass ich beim ersten Eingeben zur jetzt nutzlosen Methode1 übergehe und die zweite Zeile korrekt angezeigt wird zu Methode2
Was kann ich in diesem Fall tun?
Beobachtung: Ich weiß, dass ich im Beispiel den Reader als Klasseneigenschaft machen kann. Nur so gemacht, um das Verständnis zu erleichtern
Code: Select all
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
}
}
}