示例#1
0
        private void ContinuaEscutando()
        {
            // Enquanto o servidor estiver rodando...
            while (this.ServidorRodando == true)
            {
                try
                {
                    // Aceita a conexão pendente
                    this.tcpCliente = ChatServer.tlsCliente.AcceptTcpClient();

                    Conexao novaConexao = null;

                    #region Analisa Pacote
                    // Antes de criar a conexão, vou analisar o pacote, pois se for um pacote para parar de escutar, aqui é o único ponto onde consigo para o servidor TCP
                    StreamReader srReceiver = new StreamReader(this.tcpCliente.GetStream());

                    // Lê as informações de conta que vieram do cliente
                    string conteudoRecebido = srReceiver.ReadLine();

                    if (conteudoRecebido != null)
                    {
                        Pacote pacoteRecebido = JsonConvert.DeserializeObject<Pacote>(conteudoRecebido);
                        // Se é um pacote para parar a escuta, então paro!
                        // ATENÇÃO: Tomar cuidado pois aqui qualquer usuário engraçadinho que enviar um pacote com este comando irá parar o servidor.
                        // Adicionar uma validação para verificar se o comando realmente é do Administrador.
                        if (pacoteRecebido.Comando == Comando.PararEscuta && pacoteRecebido.Usuario == ChatServer.NomeAdministrador && pacoteRecebido.Mensagem == ChatServer.IDAdministrador)
                        {
                            ChatServer.tlsCliente.Stop();
                            this.tcpCliente.Close();
                            srReceiver.Close();
                            return;
                        }

                        if (pacoteRecebido.Comando == Comando.Conectar)
                        {
                            novaConexao = new Conexao(this.tcpCliente, pacoteRecebido);
                            //return;
                        }
                    }
                    #endregion

                    if (novaConexao == null)
                    {
                        // Cria uma nova instância da conexão
                        novaConexao = new Conexao(tcpCliente);
                    }
                }
                catch (SocketException)
                {
                    return;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
示例#2
0
 private void MantemAtendimento()
 {
     // Enquanto o servidor estiver rodando
     while (ServRodando == true)
     {
         // Aceita uma conexão pendente
         tcpCliente = tlsCliente.AcceptTcpClient();
         // Cria uma nova instância da conexão
         Conexao newConnection = new Conexao(tcpCliente);
     }
 }
示例#3
0
 public void TerminaAtendimento()
 {
     Conexao con = new Conexao(tcpCliente);
     con.FechaConexao();
 }