示例#1
0
        public bool ValidaAutenticacao(string nomeCliente)
        {
            ControlaXml    oControlaXml = new ControlaXml();
            List <Cliente> listaClientesAutenticados = oControlaXml.LeXML();

            Cliente nomeClienteAutenticado = listaClientesAutenticados.FirstOrDefault(lca => lca.Apelido == nomeCliente);

            if (nomeClienteAutenticado != null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#2
0
        public void LigaServidor()
        {
            ControlaXml oControlaXml = new ControlaXml();

            listaClientesAutenticados = new List <Cliente>();

            string nome = System.Net.Dns.GetHostName();

            System.Net.IPAddress[] ip = System.Net.Dns.GetHostAddresses(nome);
            string ipMaquina          = null;

            if (ip.Length == 4)
            {
                ipMaquina = ip[2].ToString();
            }
            else if (ip.Length == 2)
            {
                ipMaquina = ip[1].ToString();
            }

            TcpListener servidor = new TcpListener(IPAddress.Parse(ipMaquina), 8080);

            //oControlaXml.ExcreveXML();
            listaClientesAutenticados = oControlaXml.LeXML();

            Console.WriteLine("Servidor ligado");

            while (true)
            {
                try
                {
                    servidor.Start();

                    Socket        socketConexao = servidor.AcceptSocket();
                    NetworkStream socketStream  = new NetworkStream(socketConexao);
                    BinaryReader  le            = new BinaryReader(socketStream);
                    BinaryWriter  escreve       = new BinaryWriter(socketStream);

                    string   mensagemCliente  = le.ReadString().ToLowerInvariant();
                    string[] mensagemQuebrada = mensagemCliente.Split('|');
                    string   tipoMensagem     = mensagemQuebrada[0];

                    if (tipoMensagem == "login")
                    {
                        string       nomeCliente           = mensagemQuebrada[1];
                        Autenticacao oAutenticacao         = new Autenticacao();
                        bool         resultadoAutenticacao = oAutenticacao.ValidaAutenticacao(nomeCliente);

                        if (resultadoAutenticacao)
                        {
                            if (VerificaStatusCliente(listaClientesAutenticados, nomeCliente))
                            {
                                dicionarioConexao.Add(nomeCliente, socketConexao);
                                listaKeys.Add(nomeCliente);
                                escreve.Write("autenticado");
                                Console.WriteLine(nomeCliente + " está online");

                                socketConexao = null;
                                socketConexao = null;
                                le            = null;
                                escreve       = null;
                            }
                            else
                            {
                                escreve.Write("Você já esta logado em outra maquina");
                            }
                        }
                        else
                        {
                            escreve.Write("recusado");
                            socketConexao.Close();
                            socketStream.Close();
                            le.Close();
                            escreve.Close();
                        }
                    }
                    servidor.Stop();
                }
                catch
                {
                    continue;
                }
            }
        }