Ist es nur ich, oder hat niemand bemerkt, dass das JavaDoc eine Methode unter ServerSocket api angibt, die uns ermöglicht, einen Booleschen Wert basierend auf dem geschlossenen Zustand des Servers zu erhalten?
Sie alle paar Sekunden nur Schleife kann den Zustand der es zu überprüfen:
if(!serverSocket.isClosed()){
// whatever you want to do if the serverSocket is connected
}else{
// treat a disconnected serverSocket
}
EDIT: Sie Ihre Frage zu lesen wieder, so scheint es, dass Sie den Server erfordern nur ständig nach Verbindungen zu suchen, um zu und wenn der Kunde trennt, sollte es in der Lage sein, erneut zu erkennen, wenn der Client versucht, die Verbindung wiederherzustellen. sollte das nicht nur Ihre Lösung sein?
Wenn ein Server eine Verbindung herstellt, sollte er diese an ein Worker-Thread-Objekt übergeben und zum asynchronen Betrieb starten. Dann kann der Server einfach wieder auf neue Verbindungen warten. Wenn der Client die Verbindung trennt, sollte der gestartete Thread abstürzen und bei der erneuten Verbindung wird ein neuer Thread erneut gestartet, um die neue Verbindung zu verarbeiten.
Jenkov bietet ein großartiges Beispiel für diese Implementierung.
Wo 'geschlossene Socket' bedeutet, dass * Sie * den Socket geschlossen haben, nicht, dass der Peer die Verbindung geschlossen hat. Alle anderen readXXX() -Methoden, die nicht die genannten sind, werfen EOFException ab, wenn EOS auftritt. – EJP