public void run() {
        try {
            /*
             * A server socket is opened with a connectivity queue of a size specified in int floodProtection. Concurrent login handling under normal
             * circumstances should be handled properly, but denial of service attacks via massive parallel program logins should be prevented with this.
             */
            m_ServerSocket = new ServerSocket(m_Port, m_FloodProtection);

            // log entry
            Object[] args = {new Integer(m_Port), new Integer(m_FloodProtection)};
            log.info(MessageFormat.format(logmsg, args));

            do {
                try {
                    Socket s = m_ServerSocket.accept();
                    if (m_Available) {
                        connectionManager.makeConnection(s);
                    } else {
                        // just shut down the socket
                        s.close();
                    }
                } catch (SocketException ex) {
                    if (m_Stopping) {
                        // server socket was closed blocked in accept
                        log.debug("run(): ServerSocket closed by stop()");
                    } else {
                        log.error("run()", ex);
                    }
                }
            } while (!m_Stopping);

        } catch (IOException e) {
            log.error("run()", e);
        }
        log.debug("run(): returning.");
    }// run