java - Restart ServerSocket after IOException -
how restart serversocket after ioexception?
my server socket gets eofexception , stops accepting new connections. solve have tried closing old server socket , creating new 1 after exception thrown. after new server socket created, new connections not accepted. can 1 see why not work?
public server() throws ioexception { try { listen(port); } catch (ioexception e) { system.out.println("server() - io exception"); system.out.println(e); /*when exception caught close server socket , try opening new 1 */ serversocket.close(); listen(port); } } private void listen(int port) throws ioexception { serverislistening = true; serversocket = new serversocket(port); system.out.println("<listening> port: " + serversocket); while (serverislistening) { if (eofexceptionthrown){ //manually triggering exception troubleshoot serverislistening = false; throw new eofexception(); } //accept next incoming connection socket socket = serversocket.accept(); system.out.println("[new conn] " + socket); objectoutputstream oout = new objectoutputstream(socket.getoutputstream()); // save streams sockettooutputstreams.put(socket, oout); // create new thread connection, , put in hash table sockettoserverthread.put(socket, new serverthread(this, socket)); } }
2x entry point , 1 form catch: never ends well.
try { listen(port); } catch (ioexception e) { system.out.println("server() - io exception"); system.out.println(e); /*when exception caught close server socket , try opening new 1 */ serversocket.close(); listen(port); } i in loop, while boolean true:
while(needtolisten){ try{ listen(port) }catch(exception ex){ if(exception needed break loop, message has string on it){ break; } } } if(needtolisten){ log.e("something unexpected, unrecoverable...."); }
Comments
Post a Comment