Schliessen eines Serversockets

2AndAHalfBit

Aktives Mitglied
Hallo,

ich habe einen Chatserver, der auf eingehende Clients wartet, und für Sie einen Thread startet, der für auf ankommende Nachrichten vom Client wartet und sie entsprechend verarbeitet. Meldet sich der Client ab, wird der Server angewiesen, den ensprechenden Thread zu stoppen und die Userinstanz zu zerstören. Dabei werden auch alle Resourcen der Clientverbindung, insbesondere das Socket und die Streams, aufgeräumt.

Soweit sogut. Jetzt ist es aber so, dass ja noch das Serversocket existiert, welches auf neue Verbindungen lauscht. Das muss ja noch geschlossen und freigegeben werden. Also dachte ich mir, ich installiere einen eigenen Thread der auf Konsoleneingaben horscht und bei einem bestimmten Keywort das Socket schliesst.

Dummerweise wird das Socket geschlossen, während der Server in der Methode accept steckt und wirft eine Exception. Alles logisch, aber habt ihr vielleicht einen Lösungsansatz für mich?

Grüße
 
try catch drumherum, eine Exception ist nichts böses,
oder mit Timeout arbeiten, und den ServerSocket zwischen zwei accept-Perioden schließen
 
Wie Slater schon sagte: Du steckst immer im Accept fest, wenn Du grade abbrichst/schließt. Denn Accept wartet ja, dass jemand kommt.
Wenn Du nun von außen abbrichst, egal wie, dann wirft Accept eine Exception, die Du abfangen kannst (separiere diese von den andren Exceptions).
Das ist das normale Vorgehen zum Abbrechen des Sockets. Die Exception muss sein und ist wichtig.
 

Neue Themen


Zurück
Oben