Witam!
Napisalem prosty komunikator internetowy, oparty na ServerSocket oraz ClientSocket.
Calosc wyglada tak jak w tym artykule: http://p-zone.pl/articles.php?art_id=40&action=show
Wszystko byloby ok, gdyby nie jeden powazny problem.
W momencie, kiedy jednemu z klientow podlaczonych do serwera padnie net / zawiesi(zresetuje) sie komputer / czy tez wylaczy program przez CTRL+ALT+DEL (czyli innymi slowy serwer nagle, bez zadnej informacji, straci polaczenie z klientem) - od razu po takim nieprzewidzianym rozlaczeniu ktoregos z klientow, wyskakuje blad "Asynchronous socket error 10053) i serwer zaczyna wariowac. W momencie, gdy ktorys z pozostalych uzytkownikow cos napisze, serwer zaczyna wysylac mnostwo komunikatow (Uzytkownik: XXX.XXX.XXX.XXX opuscil czat), dzieje sie tak az do bledu "Stack overflow", po czym serwer sie wylacza.
Probowalem w aplikacji serwera, powrzucac try except, jednak to nie rozwiazuje problemu. Dzieje sie dokladnie to samo, z tym, ze bez "wypluwania" bledow (tzn po naglym odlaczeniu ktoregos z klientow, serwer wciaz zaczyna wariowac, a pozniej sie wylacza).
Bardzo latwo to mozna przetestowac, odpalajac serwer oraz 2 klienty, polaczajac sie obydwoma klientami do serwera, a pozniej wylaczajac jeden z procesow klienta przez CTRL+ALT+DEL i sprobowac napisac cos drugim, ciagle podlaczonym do serwera, klientem.

Jesli ktos chce to przetestowac, to zuploadowalem gotowy kod zrodlowy + exeki obu tych aplikacji:
http://rapidshare.com/files/21916307/komunikator.rar.html

Tak wiec, czy wie ktos jak to poprawic ? Chcialbym, zeby po utracie kontaktu serwera z klientem, serwer po prostu wyrzucal tego "problematycznego" klienta, bez sypania zadnymi bledami i bez wysylania dziesiatek komunikatow do podlaczonych klientow, az do calkowitego "wysypania" sie aplikacji serwera :(