Código da Disciplina: FGA0211
Disciplina: Fundamentos de Rede de Computadores
Curso: Engenharia de Software - FGA/UnB - 2021.2
Professor: Fernando William Cruz
Matrícula | Aluno |
---|---|
17/0115500 | Vinícius Vieira de Souza |
18/0030272 | Antônio Ruan Moura |
Este projeto tem como objeto, permitir que os alunos compreendam a arquitetura de aplicações de rede (segundo arquitetura TCP/IP) que envolvam gerência de diálogo. Para isso, devem construir uma aplicação que disponibilize salas de bate-papo virtuais, nas quais os clientes podem ingressar e interagir.
- Os alunos se reuniram no dia 27 de abril para discutir a liguagem.
- No dia 29 de abril os alunos refletiram sobre quais as metas além dos requisitos solicitados seriam implementadas. Além do inicio de estudos sobre como seria implementadas
- No dia 3 de maio os alunos se reuniram para iniciar a implementação de chat de maneira simples (bate papo simples com sala única) e sequencialmente realizarem sua otimização para a utilização de múltiplas salas de bate papo.
- No dia 4 foi realizado ajustes, e tentativa de implementação extra (critografia de mensagens) e finalização do trabalho.
O código principal esta dividido entre o modulo chat_server, client. O modulo chat_server ira rodar o servidor de forma local (IP: 127.0.0.1) na porta 8080. Ele possui funções administrativas mínimas como sugerido nas especificações do trabalho. Assim também como funções de gerenciamento do dialogo para tratar e receber mensagens do cliente. Também é neste modulo que são definidas as salas com suas capacidades maximas de membros
O modulo client permite a conexao com o servidor para a realização do dialogo, pois é através do servidor que o cliente ira repassar as mensagens para os demais usuário do chat por meio de um broadcast. Este modulo tambem define o identificador(apelido) que o cliente utilizara no chat.
Como extras os alunos implementaram comandos especiais. \quit para cortar a conexao do cliente com o servido, saindo da aplicação. O comand \l para listar todos os integrantes da mesma sala de chat. \kick para que o administrador expulse usuarios do chat atraves do nickname, e \ban para que o admin banir o cliente que não tera mais acesso ao chat usando o mesmo nickname. \to também é um comando implementado para o envio de mensagens criptografadas para um determinado membro da sala. Além disso ha um comando \help para ajudar o cliente.
O projeto entregue possui diversas dos requisitos especificados implementados. Com a excessão de criação por parte do usuário das salas de bate papo (A criação ocorre diretamente no servidor). O cliente não consegue no momento realizar a troca de salas tendo de realizar um novo acesso para entrar em outra sala. O dialogo em vídeo/audio seria uma funcionalidade de melhoria assim como uma interface gráfica mais amigável para o cliente.
O projeto foi bastante interessante, pois deu uma noção melhor sobre como os aplicativos de bate-papo como whatsapp, telegram entre outros possam ser realizado. Fazendo essa comparação também dá pra perceber como esse projeto poderia evoluir em questões de cominicação entre o cliente e servidor, assim também como questões de segurança. Uma melhoria que acho que seria interessante para disciplina seria a disponibilização de um cronograma de realização de minitestes para facilitar a preparação dos alunos quanto ao estudo. A participação dos integrantes do grupo neste trabalho ocorreu sem nenhum problema, os dois membros se ajudaram de forma harmoniosa pareando e trocando conhecimento. Creio que meu desempenho na disciplina poderia ter sido melhor se a disponibilização dos materiais e cronograma de avaliações tivesse ocorrido com maior antecedência para organizar meus estudos.
Foi uma boa oportunidade poder trabalhar utilizando os conceitos aprendidos na disciplina, para melhorias acredito que um prazo maior para as tarefas seja mais aproveitado, como diluir esse trabalho final para todo o semestre, apesar de ser uma ideia relativamente simpels, da bastante trabalho programar nesse nível. A participação do grupo foi bastante construtiva, no geral ambos parearam bastante e compartilharam conhecimento como um todo. Acredito que meu desempenho nesse trabalho foi muito significativo, unica coisa que ficou faltando foi mais tempo para concluir o projeto, pois existem muitas funcionalidades legais para ser explorada sobre o tema do trabalho final.
Para executar o projeto é necessário que sua maquina possua python3:
sudo apt-get install python3
Após clonar o repositório pela primeira vez, no diretório execute na raiz do projeto o comando:
pip install -r requirements.txt
Em seguida é necessário abrir dois terminais na raiz do projeto. O primeiro que deverá inicializar o servidor do chat através do comando:
python3 src/chat_server.py
Em sequencia é para realizar a conexao do cliente com o servidor. Ainda na raiz, execute:
python3 src/client.py
pronto a aplicação já esta rodando.
- https://www.geeksforgeeks.org/simple-chat-room-using-python/ (Utilizada para ter uma base de como implementar o chat de forma simples com comunicação tcp/ip)
- Simple TCP Chat Room in Python (https://www.youtube.com/watch?v=3UOyky9sEQY&t=1235s) (Algoritmo que foi adaptado e utilizado pelos alunos no projeto para a elaboração dos modulos chat_server e client.)