private void Escuchar()
        {
            try
            {
                while (!cerrado)
                {
                    Conversacion c = new Conversacion();
                    c.puerto  = _servidor.AcceptSocket();
                    c.cerrado = false;
                    c.proceso = new Thread(Hablar);
                    //Configurar conversación

                    int key = CalcularClave();
                    c.proceso.Start(key);
                    Procesos.Add(key, c);
                    OnNuevaConexion(c.puerto.RemoteEndPoint.ToString(), key);
                }
            }
            catch (Exception ex)
            {
            }
            finally
            {
                //Fin servidor
            }
        }
        private void Hablar(Object pos)
        {
            Conversacion actual = null;

            try
            { actual = Procesos[(int)pos];
              while (!actual.cerrado)
              {
                  int    tam  = actual.puerto.ReceiveBufferSize;
                  byte[] buff = new byte[tam];
                  actual.puerto.Receive(buff, tam, SocketFlags.None);
                  String datos = ProcesarBytes.EncodeBytes(buff);
                  //Evento datos recibidos
                  OnDatosRecibidos(datos, (int)pos);
              }
            }
            catch (Exception ex)
            {
            }
            finally
            {
                OnConexionTerminada(actual.puerto.RemoteEndPoint.ToString());
                actual.puerto.Close();
                actual.Cerrar();
                //Conexion Terminada
            }
        }