Ik ben wat aan't experimenteren met ServerSockets/Sockets in Java. Ik heb een eenvoudige multithreaded server in elkaar gestoken en die werkt naar behoren... Ik heb echter 1 probleem:
Wanneer een client (die inlogd is via Telnet op de server) de verbinding op onverwachte manier beëindigd (=niet met een commando, maar gewoon z'n telnet app afsluit), dan begint m'n server te stressen (CPU 100%, en geheugenverbruik ook omhoog).
Nu zou je dit toch eenvoudig (?) moeten kunnen opvangen dacht ik... met een SocketException ofzo, maar dit blijkt niet te zijn.
Hier is een stukje van de code:
Heb al verschillende sites bekeken waaronder die van Sun, maar niet echt iets gevonden.
Kan iemand mij hier in de goeie richting duwen met m'n probleem?
Owja, heb het getest op Win2000 met SDK 1.4.1
Wanneer een client (die inlogd is via Telnet op de server) de verbinding op onverwachte manier beëindigd (=niet met een commando, maar gewoon z'n telnet app afsluit), dan begint m'n server te stressen (CPU 100%, en geheugenverbruik ook omhoog).
Nu zou je dit toch eenvoudig (?) moeten kunnen opvangen dacht ik... met een SocketException ofzo, maar dit blijkt niet te zijn.
Hier is een stukje van de code:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| public void run() { while (true) { try { runServer = true; while(runServer){ String get = inlezenClientRequest(); doeIetsMetClientRequest(get); // runServer kan hier op false worden gezet. } } /* De client verbreekt onverwachts de verbinding -> hier opgevangen??? */ catch (SocketException e) { e.printStackTrace(); clientReset = true; //client finished communication } catch (IOException e) { e.printStackTrace(); } /* Beëindig de verbinding met de client. */ finally { if (!clientReset){ reply("server is terminating the connection..."); client.close(); } } } } |
Heb al verschillende sites bekeken waaronder die van Sun, maar niet echt iets gevonden.
Kan iemand mij hier in de goeie richting duwen met m'n probleem?
Owja, heb het getest op Win2000 met SDK 1.4.1