Har skrivit en liten enkel javachat med en applet som vi socket ansluter till en server. servern som rullar ser ut så här:
ServerSocket server = new ServerSocket (port);
while (true)
{
Socket client = server.accept ();
ChatHandler c = new ChatHandler (client);
}
ChatHandler är sedan en klass som sköter sin klient. Den går igång som en separat tråd.
Allt funkar bra ett tag. Men helt plötsligt slutar servern att skapa nya ChatHandler objekt när någon ny ansluter. Jag har inte lyckats lista ut nåt system då detta händer utan det kan ske efter några minuter eller efter flera dagar. Det räcker då med att starta om serverprogrammet bara så rullar allt ett tag till sen...
Det skulle jag tvivla på hjälper (även om det funkar). Jag skulle gissa på att felet beror på att det någonstans kastas ett undantag som inte hanteras riktigt riktigt. Har du några satser i stil med catch(Exception e){} någonstans?
Tja, det beror på vad det är för exception som kastas. Är det ett IOException torde det betyda att klienten kopplat ner sig, och då borde man ju ta bort den socketen från listan av anslutningar. Det enklaste sättet att ta reda på varifrån undantaget kastas är att byta ut catch(Exception e){} mot catch(Exception e){ e.printStackTrace(); } så får du en fin stackutskrift på stderr när undantaget fångas.