DerKleineVomSee
Mitglied
Hi,
ich habe gerade folgendes Problem. Ich habe eine Server-Client Applikation geschrieben die Daten miteinander austauscht. Falls der Server die Verbindung zum Client schliesst (socket.close()), möchte ich den Socket auf der Client seite abfragen. Um die geschlossende Verbindung festzustellen habe ich schon einige Funktionen ausprobiert u.a. socket.isClosed() und socket.isConnected(). Leider wird das Verbindungsende nie erkannt. Erst wenn ich das nächste mal aus einem Stream lesen oder in den Stream schreiben will bekomme ich eine Exception.
Hier mal ein kurzes Auszug vom Server:
..und hier vom Client:
Wie ihr aus dem Code sehen könnt, wartet der Client auf die Verbindung zum Server. Dann tuhen die beiden irgendwas, bis der Server die Verbindung schließt, was ich auf der Client Seite bemerken will, was aber nicht klappt.
Ich hoffe ihr hab eine Idee.
ich habe gerade folgendes Problem. Ich habe eine Server-Client Applikation geschrieben die Daten miteinander austauscht. Falls der Server die Verbindung zum Client schliesst (socket.close()), möchte ich den Socket auf der Client seite abfragen. Um die geschlossende Verbindung festzustellen habe ich schon einige Funktionen ausprobiert u.a. socket.isClosed() und socket.isConnected(). Leider wird das Verbindungsende nie erkannt. Erst wenn ich das nächste mal aus einem Stream lesen oder in den Stream schreiben will bekomme ich eine Exception.
Hier mal ein kurzes Auszug vom Server:
Code:
//Exceptions werden jetzt mal ignoriert
private void startConnectionToClient(String ip, int timeout, String PORT) {
SocketAddress addr = new SocketAddress(ip, PORT);
Socket socket = new Socket();
socket.connect(addr, timeout);
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
//tuhe irgendwas......
//Schliesse jetzt doch mal die Verbindung
out.close();
in.close();
socket.close();
}//startServer
..und hier vom Client:
Code:
private void waitServerConnection(String port)
ServerSocket serverSocket =new ServerSocket(port);
Socket socket = serverSocket.accept();
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
//tuhe irgendwas
while(true) {
if(socket.isClosed()) {
//tuhe irgendwas
}//if
else {
//tuhe das normale
}//
}//while
}
Wie ihr aus dem Code sehen könnt, wartet der Client auf die Verbindung zum Server. Dann tuhen die beiden irgendwas, bis der Server die Verbindung schließt, was ich auf der Client Seite bemerken will, was aber nicht klappt.
Ich hoffe ihr hab eine Idee.