Servidor de chat de sala única, onde os clientes se conectam à sala, recebendo e enviando mensagens para outros usuários.
Projeto composto por duas etapas:
1. Desenvolvimento de uma ferramenta de troca de arquivos .txt e reverberação disso em um chat de mensagens, utilizando comunicação com UDP;
2. Implementação de um protocolo de transferência confiável ao chat básico de troca de mensagens já feito, utilizando UDP e o método RDT 3.0 apresentado em sala de aula.
Baseado em um projeto da disciplina de Redes de Computadores do curso de Sistemas de Informação da UFPE.
Tabela de Conteúdos
Antes de começar, verifique se você atendeu aos seguintes requisitos:
- Clone o projeto e abra em seu editor de código favorito;
- Certifique que você está com o
python 3.10+
instalado; - Certifique que você está com todos os plugins, nescessários para rodar um projeto python, instalados em seu editor de código;
- Inicialmente, você deve abrir seu terminal na pasta
chat-udp-rdt3.0
; - Em seguida, você deve executar o arquivo
server.py
nesse terminal. - Para conectar um usuário ao chat, execute o arquivo
client.py
em um teminal separado (esse terminal também deve ser aberto na pastareal-time-upd-chat
)
OBS: Você pode adicionar outros clientes duplicando o arquivo client.py e executando cada cliente em um terminal separado.
-
Primeiro, o usuário deve rodar simultaneamente os dois principais arquivos (nesta ordem) em terminais diferentes:
- Rodar o arquivo server.py
- Rodar o arquivo client.py
-
A partir disso, o primeiro usuário poderá usar o chat.
-
Caso outro usuário deseje usar o chat, é preciso rodar o client.py novamente em outro terminal, de modo que haverá um terminal com client.py para cada pessoa que estiver utilizando o chat.
Linguagem de programação Python
- Chat UDP de sala única para múltiplos usuários com transferência confiável RDT 3.0;
- Cliente e Servidor;
- Troca de arquivos em formato de texto (.txt);
- Conectar, sair e enviar mensagens na sala;
- Implementação RDT 3.0: 3 Way Handshake (SYN-ACK), processo de finalização (FYN-ACK), checksum, timeout e tratamento de perda ou corrupção de pacotes de dados e de reconhecimento.
-
Datetime
: Manipula datas e horas. -
OS
: Biblioteca para manipulação de arquivos e diretórios. -
Queue
: Aplicamos a biblioteca tkinter para criar interfaces gráficas de usuário (GUI). -
Random
: Utilizado para gerar números de porta aleatórios. -
Socket
: Cria sockets para comunicação em uma rede. -
Struct
: Bilioteca que interpreta bytes como dados binários compactados. -
Threading
: Cria threads, que são úteis para executar operações simultâneas.
Link para o repositório: https://github.com/bomday/chat-UDP-RDT3.0