public void run() { ServerSocket server; try { server = new ServerSocket(PORT); } catch (BindException ex) { this.logger.log(Level.SEVERE, "Failed to start the server on port" + PORT, ex); return; } catch (IOException ex) { this.logger.log(Level.SEVERE, "Failed to start the server on port" + PORT, ex); return; } while (isAlive()) { Socket skt; try { skt = server.accept(); } catch (Exception ex) { this.logger.info("Error while waiting for connection"); this.logger.info("Ignore this if you were disabling the plugin/server"); return; } logger.info("Socket accepted."); BufferedReader reader; try { skt.setKeepAlive(true); reader = new BufferedReader(new InputStreamReader(skt.getInputStream())); } catch (Exception ex) { this.logger.log(Level.SEVERE, "Encountered an error while opening socket data connections.", ex); return; } CommandHandler handler = new CommandHandler(bukkitServer, logger); try { String line; while ((line = reader.readLine()) != null) { handler.parse(line); } } catch (Exception ex) { this.logger.log(Level.SEVERE, "Encountered an error while reading from socket.", ex); } } }