示例#1
0
    //Implementación método Conectar
    public bool Conectar(Cliente c)
    {
        if (!Clientes.ContainsValue(ActualRespuesta) &&
            !BuscarCliente(c.Usuario))
        {
            //bloqueo de exclusión mutua
            lock (ObjetoBloqueo)
            {
                Clientes.Add(c, ActualRespuesta);
                ListaClientes.Add(c);

                foreach (Cliente cl in Clientes.Keys)
                {
                    IChatRespuesta Respuesta = Clientes[cl];
                    try
                    {
                        Respuesta.RefrescarClientes(ListaClientes);
                        Respuesta.Unirse(c);
                    }
                    catch
                    {
                        Clientes.Remove(cl);
                        return(false);
                    }
                }
            }
            return(true);
        }
        return(false);
    }
示例#2
0
    public void EnviarArchivo(FileMessage fileMsg)
    {
        foreach (Cliente rcvr in Clientes.Values)
        {
            Mensaje ms = new Mensaje();
            ms.Remitente = fileMsg.Remitente;
            ms.Contenido = "Enviando archivo: " + fileMsg.NombreArchivo;

            IChatRespuesta rcvCall = Clientes[rcvr];
            rcvCall.RecibirArchivo(fileMsg);

            foreach (Cliente Remitente in Clientes.Values)
            {
                if (Remitente.Usuario == fileMsg.Remitente)
                {
                    IChatRespuesta sndrCall = Clientes[Remitente];
                    sndrCall.RecibirArchivo(fileMsg);
                }
            }
        }
    }