Skip to content

itallume/Projeto-Triplo-integrado

Folders and files

NameName
Last commit message
Last commit date

Latest commit

391ef65 · Dec 23, 2023

History

47 Commits
Dec 22, 2023
Dec 20, 2023
Dec 22, 2023
Dec 22, 2023
Dec 22, 2023
Dec 20, 2023
Dec 17, 2023
Dec 23, 2023
Dec 20, 2023
Dec 21, 2023
Dec 22, 2023

Repository files navigation

Projeto Triplo Integrado: Chat de Aconselhamento (desenvolvimento)

Objetivo O projeto Triplo Integrado é uma aplicação de chat de aconselhamento que integra conceitos de Sistemas Operacionais, Protocolos de Redes e Estruturas de Dados. O principal objetivo é criar um ambiente virtual onde conselheiros e aconselhados podem se comunicar em tempo real, fornecendo suporte e aconselhamento.

Funcionalidades Principais

Servidor

  • Login e Registro: Os usuários podem realizar login ou se registrar para acessar o chat.
  • Emparelhamento Dinâmico: O servidor emparelha conselheiros e aconselhados com base em suas notas e preferências, usando uma árvore de busca binária e dicionários para definir notas mínimas.
  • Chat Privado: Os usuários podem participar de vários chats privados simultaneamente, com assuntos e intensidades específicas.

Cliente

  • Login e Registro: Os usuários podem criar uma conta ou fazer login usando credenciais existentes.
  • Escolha de Intensidade e Assunto: Os aconselhados podem escolher a intensidade (baixa, média, alta) e o assunto do chat.
  • Comunicação em Tempo Real: Os usuários podem trocar mensagens em tempo real durante o chat.
  • Notificação de Eventos: Os usuários são notificados sobre eventos importantes, como início de um chat ou desconexão.

Tecnologias Utilizadas

Sistemas Operacionais

  • Threads: Utilização de threads para permitir a comunicação simultânea com vários clientes, gerenciando concorrência por meio de mutex para garantir exclusão mútua.
  • Mutex: Mecanismo de mutex (exclusão mútua) para proteger seções críticas do código e evitar condições de corrida.

Protocolos de Redes

  • TCP/IP: Comunicação entre clientes e servidor usando o protocolo TCP/IP para garantir uma transferência confiável e ordenada de dados.
  • Dicionários para Protocolo: Uso de dicionários para definir códigos e mensagens padronizadas entre o servidor e os clientes.

Estruturas de Dados

  • Chaining Hash Table: Utilizada para armazenar usuários online, informações de conselheiros e chats ativos.
  • Binary Search Tree: Usada para armazenar conselheiros com base em suas notas, facilitando a busca e seleção eficientes.

Como Executar o Projeto

  1. Clone o repositório para sua máquina local.
  2. Execute o servidor usando o comando python server.py.
  3. Execute os clientes usando o comando python client.py.

Certifique-se de ter as bibliotecas necessárias instaladas. Consulte o arquivo requirements.txt para obter informações detalhadas.

Contribuições Contribuições são bem-vindas! Sinta-se à vontade para abrir problemas ou enviar pull requests para melhorias e correções.