Servidor de chat de sala única, onde os clientes se conectam à sala, recebendo e enviando mensagens para outros usuários.
Acesse o vídeo explicativo Através do link: (https://youtu.be/yAcvJgEOcXg)
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.
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
real-time-udp-chat
; - 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. -
Math
: Fornece funções matemáticas avançadas. -
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. -
Time
: Utilizado para aplicar timeout.
Link para o repositório: https://github.com/Dev-JoseRonaldo/real-time-udp-chat.git
Dayane Lima |
José Ronaldo |
Luiz Henrique |
Mariana Marinho |
- Linkedin: https://www.linkedin.com/in/dayane-lima-5b2558199/
- Email: [email protected]
- Linkedin: https://www.linkedin.com/in/devjoseronaldo/
- Email: [email protected]
- Linkedin: https://www.linkedin.com/in/lhbas/
- Email: [email protected]
- Linkedin: https://www.linkedin.com/in/mariana--marinho/
- Email: [email protected]