Hi Leute,
folgender kleiner Chatclient, dabei liegt mein Anliegen bzw. meine Frage hauptsächlich auf die Thread-Klasse "EingehendReader" welcher für die Püfung von eingehenden Nachrichten eine Schleife durchläuft:
Nun zu meiner eigentlichen Frage. Und zwar, wird die Schleife in dem Thread welcher eingehende Nachrichten abpfängt nicht sofort beendet, da ja readline() null zurückwirft und damit wird der Thread ebenfalls nicht sofort beendet?
Also das Programm funktioniert, nur ist mir nicht klar wieso die Schleife bestehen bleibt obwohl nichts gesendet wird.
Gruß Jan
folgender kleiner Chatclient, dabei liegt mein Anliegen bzw. meine Frage hauptsächlich auf die Thread-Klasse "EingehendReader" welcher für die Püfung von eingehenden Nachrichten eine Schleife durchläuft:
Code:
package ClientServerTestProgramm;
public class EinfacherChatClient {
JTextArea eingehend;
JTextField ausgehend;
BufferedReader reader;
PrintWriter writer;
Socket sock;
String message;
public static void main(String[] args) {
EinfacherChatClient client = new EinfacherChatClient();
client.los();
}
public void los() {
GUI-Zeugs...
netzwerkEinrichten();
Thread readerThread = new Thread(new IncomingReader());
readerThread.start();
GUI-Zeugs...
} // close go
private void netzwerkEinrichten() {
try {
sock = new Socket("127.0.0.1", 5000);
InputStreamReader streamReader = new InputStreamReader(sock
.getInputStream());
reader = new BufferedReader(streamReader);
writer = new PrintWriter(sock.getOutputStream());
System.out.println("Netzwerkverbindung steht");
} catch (IOException ex) {
ex.printStackTrace();
}
}
public class SendenButtonListener implements ActionListener {
public void actionPerformed(ActionEvent ev) {
try {
writer.println(ausgehend.getText());
writer.flush();
} catch (Exception ex) {
ex.printStackTrace();
}
ausgehend.setText("");
ausgehend.requestFocus();
}
}
public class EingehendReader implements Runnable {
public void run() {
try {
while ((message = reader.readLine()) != null) {
System.out.println("gelesen: " + message);
eingehend.append(message + "\n");
}
System.out
.println("Beende Thread für eingehende Nachrichten im Client...");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
Nun zu meiner eigentlichen Frage. Und zwar, wird die Schleife in dem Thread welcher eingehende Nachrichten abpfängt nicht sofort beendet, da ja readline() null zurückwirft und damit wird der Thread ebenfalls nicht sofort beendet?
Also das Programm funktioniert, nur ist mir nicht klar wieso die Schleife bestehen bleibt obwohl nichts gesendet wird.
Gruß Jan
