public void stop() {
   if (_serverSocket != null) {
     if (_serverAlive) {
       _serverAlive = false;
       if (_serverAcceptThread != null) _serverAcceptThread.interrupt();
       _serverAcceptThread = null;
       for (int i = _countAcceptedClients - 1; i >= 0; i--) {
         _vAcceptedClientReadThread.elementAt(i).interrupt();
         _vAcceptedClientPrintThread.elementAt(i).interrupt();
         try {
           addlog("try to eject client" + String.valueOf(i));
           _vAcceptedClientSocket.elementAt(i).close();
         } catch (Exception e) {
         }
       }
       _vAcceptedClientReadThread.removeAllElements();
       _vAcceptedClientPrintThread.removeAllElements();
       _vAcceptedClientSocket.removeAllElements();
       _vAcceptedClientID.removeAllElements();
       //
       try {
         addlog("try to close server");
         _serverSocket.close();
         addlog("close server success");
       } catch (Exception e) {
         addlog("close server failed");
       }
     }
     _serverSocket = null;
     _serverEventListener.onServerConnectionStatus(
         GameServerEventListener.ServerConnectionStatus.DISCONNECTED);
   }
 }
 public void start() {
   _serverAlive = true;
   _serverAcceptThread = new ServerAcceptThread();
   _serverAcceptThread.start();
 }