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; } } }
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); } }
public void TerminaAtendimento() { Conexao con = new Conexao(tcpCliente); con.FechaConexao(); }