/// <summary>
        /// Escuta por conexões de clientes e as aceita.
        /// </summary>
        public void Accept()
        {
            this.v_listener.Start();

            this.v_status = SpartacusMin.Net.ServerStatus.LISTENING;

            this.v_threadaccept.Start();
            this.v_threadcheck.Start();
            this.v_threadclean.Start();
        }
 /// <summary>
 /// Encerra o Servidor.
 /// </summary>
 public void StopServer()
 {
     try
     {
         this.v_status = SpartacusMin.Net.ServerStatus.NOTLISTENING;
         if (this.v_threadaccept.IsAlive)
         {
             this.v_threadaccept.Abort();
         }
         this.v_listener.Stop();
     }
     catch (System.Exception e)
     {
         throw new SpartacusMin.Net.Exception(e);
     }
 }
        /// <summary>
        /// Inicializa uma nova instância da classe <see cref="SpartacusMin.Net.Server"/>.
        /// </summary>
        /// <param name="p_ip">IP do Servidor.</param>
        /// <param name="p_port">Porta do Servidor.</param>
        public Server(string p_ip, int p_port)
            : base(p_ip, p_port)
        {
            this.v_ip   = p_ip;
            this.v_port = p_port;

            this.v_connect    = new SpartacusMin.Net.ConnectEventClass();
            this.v_disconnect = new SpartacusMin.Net.DisconnectEventClass();
            this.v_available  = new SpartacusMin.Net.AvailableEventClass();

            this.v_status = SpartacusMin.Net.ServerStatus.NOTLISTENING;

            this.v_listener = new System.Net.Sockets.TcpListener(System.Net.IPAddress.Parse(p_ip), p_port);

            this.v_numclients     = 0;
            this.v_clienthandlers = new System.Collections.Generic.List <ClientHandler>();

            this.v_threadaccept = new System.Threading.Thread(this.ThreadAccept);
            this.v_threadcheck  = new System.Threading.Thread(this.ThreadCheck);
            this.v_threadclean  = new System.Threading.Thread(this.ThreadClean);

            this.v_lock = new object();
        }