Skip to content

Releases: marinaggc/LPII_Trabalho_Final

Entrega da Etapa 3: Sistema Completo

Choose a tag to compare

@marinaggc marinaggc released this 07 Oct 00:04

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

Entrega da Etapa 2: Protótipo CLI de Comunicação

Choose a tag to compare

@marinaggc marinaggc released this 03 Oct 20:33

LPII - Trabalho Final: Programação Concorrente - Etapa 2

Esta entrega corresponde à Etapa 2: Protótipo CLI de Comunicação.


Funcionalidades Entregues na Etapa 2

  • Servidor Concorrente Funcional: Foi implementado o servidor TCP que aceita múltiplas conexões de clientes simultaneamente. Cada cliente é gerenciado em uma thread separada, permitindo que o servidor permaneça responsivo para novas conexões.

  • Cliente CLI: Foi desenvolvido um programa cliente de linha de comando (client.exe) que permite ao usuário conectar-se ao servidor, enviar mensagens e receber respostas. O cliente também utiliza uma thread para receber mensagens de forma assíncrona, não bloqueando o usuário.

  • Comunicação em Rede: O protótipo demonstra a comunicação básica em rede. O cliente envia mensagens de texto para o servidor, e o servidor confirma o recebimento.

  • Logging Integrado: A biblioteca libtslog da Etapa 1 foi integrada ao servidor para registrar eventos importantes, como inicialização, conexões de novos clientes, mensagens recebidas e desconexões.


Como Compilar e Executar

Este projeto utiliza make para compilar os executáveis do servidor e do cliente.

  1. Pré-requisitos:

    • Compilador C++ (G++)
    • Make
  2. Compilar o projeto:
    No terminal, na raiz do projeto, execute o comando para compilar ambos os programas:

    make

    Isso criará os arquivos server.exe e client.exe dentro da pasta bin/.

  3. Executar o Servidor:
    Abra um terminal e inicie o servidor com o seguinte comando:

    ./bin/server.exe

    O servidor ficará rodando, aguardando por conexões.

  4. Executar o(s) Cliente(s):
    Abra um novo terminal para cada cliente que desejar conectar. Execute o comando:

    ./bin/client.exe

    Você pode abrir vários terminais e rodar este comando em cada um para simular múltiplos clientes.

Entrega da Etapa 1: libtslog e Arquitetura

Choose a tag to compare

@marinaggc marinaggc released this 26 Sep 19:29

LPII - Trabalho Final: Programação Concorrente - Etapa 1

Este é o repositório para o trabalho final da disciplina de LPII.
Esta entrega corresponde à Etapa 1: libtslog e Arquitetura.


Funcionalidades Entregues na Etapa 1

  • Biblioteca de Log Thread-Safe (libtslog): Foi implementada uma biblioteca de log simples, encapsulada na classe Logger, que permite a escrita concorrente em um arquivo de log. A exclusão mútua é garantida pelo uso de std::mutex para evitar condições de corrida.

  • Teste CLI de Concorrência: Um programa principal (main.cpp) foi desenvolvido para simular um ambiente com múltiplas threads (10 threads, cada uma escrevendo 100 mensagens) que utilizam a biblioteca de log simultaneamente para demonstrar que ela é, de fato, thread-safe.

  • Arquitetura Inicial (Tema A: Servidor de Chat): Foi definida a arquitetura inicial para o projeto.

    • [cite_start]Headers Principais: Foram criados os arquivos de cabeçalho Server.h e Client.h com a declaração das classes e seus principais atributos e métodos. [cite: 59]
    • [cite_start]Diagramas: Foram produzidos o diagrama de sequência, para ilustrar o fluxo de comunicação, e o diagrama de classes, para mostrar a estrutura estática do projeto. [cite: 59]

Como Compilar e Executar

Este projeto utiliza make para a compilação.

  1. Pré-requisitos:

    • Compilador C++ (G++)
    • Make
  2. Compilar o projeto:
    No terminal, na raiz do projeto, execute o comando:

    make
  3. Executar o teste da biblioteca de log:
    Após a compilação, execute o programa de teste:

    ./bin/teste.exe
  4. Verificar o resultado:
    Um arquivo chamado log_concorrente.txt será criado na raiz do projeto, contendo as mensagens de todas as threads de forma organizada.