Repository navigation
Este release corresponde à entrega final (Etapa 3) do projeto de Programação Concorrente. O sistema de chat multiusuário está completo, com todas as funcionalidades obrigatórias implementadas, juntamente com a documentação e análise crítica.
Funcionalidades Implementadas
Servidor TCP Concorrente: Aceita múltiplas conexões de clientes simultaneamente.pdf, source: 1443].
Threads Dedicadas: Cada cliente conectado é gerenciado por uma std::thread individual.pdf, source: 1444].
Broadcast: As mensagens são retransmitidas para todos os outros clientes conectados.pdf, source: 1444].
Cliente CLI: Cliente de linha de comando para conectar, enviar e receber mensagens de forma assíncrona.pdf, source: 1446].
Proteção de Dados: As estruturas compartilhadas (lista de clientes e histórico de mensagens) são protegidas contra condições de corrida usando std::mutex e std::lock_guard.pdf, source: 1448].
Controle de Conexões: Foi implementado um limite de 5 clientes simultâneos usando std::condition_variable para gerenciar o acesso.
Logger Thread-Safe: O sistema possui um logger concorrente customizado que utiliza std::mutex para garantir a escrita segura no arquivo de log.pdf, source: 1445; RELATORIO.md].
Observação: Foi implementado um logger customizado em vez de utilizar a biblioteca libtslog externa.
Relatório Final
O relatório completo, incluindo o mapeamento de requisitos, o diagrama de sequência e a análise crítica com IA, está disponível no arquivo RELATORIO.md.
Clique aqui para acessar o Relatório Final
Como Compilar e Executar
Compilar o projeto:
Bash
make all
Executar o servidor:
Bash
./bin/server.exe
Executar um ou mais clientes (em terminais separados):
Bash
./bin/client.exe