Este projeto implementa uma comunicação entre clientes e servidores utilizando sockets TCP e UDP em Python. Os clientes se inscrevem em tópicos de interesse e recebem mensagens distribuídas pelo servidor conforme a categoria selecionada.
O projeto está dividido em três principais componentes:
- Consumer: Representa o cliente que se conecta ao servidor TCP e recebe mensagens conforme sua inscrição em categorias.
- Distributor: Representa o servidor que gerencia as conexões dos clientes e distribui as mensagens conforme os tópicos de interesse.
- Generator: Gera e envia dados aleatórios para o servidor através de UDP, que então distribui essas informações para os clientes inscritos.
Info.py: ClasseInfoque encapsula os dados de uma mensagem.Consumer.py: Código do cliente que recebe mensagens do servidor.Distributor.py: Código do servidor que distribui mensagens para os clientes.Generator.py: Código que gera e envia mensagens para o servidor.
Para rodar este projeto, você precisa de:
- Python 3.7 ou superior
git clone https://github.com/GuiTaglietti/PyPubSub.git
cd PyPubSubO servidor de distribuição gerencia as conexões dos clientes e recebe os dados dos geradores. Em um terminal, execute:
python3 Distributor.pyO gerador cria mensagens aleatórias e envia para o servidor. Abra outro terminal e execute:
python3 Generator.pyO cliente consumidor se conecta ao servidor e recebe mensagens das categorias selecionadas. Abra outro terminal e execute:
python3 Consumer.pyAo iniciar, você poderá se inscrever em uma ou mais categorias (digite os números separados por espaço).
Este exemplo demonstra como utilizar o projeto completo:
- Inicie o
Distributor.pypara configurar o servidor de distribuição. - Em um segundo terminal, execute o
Generator.pye defina o número de geradores que você deseja criar. - Em um terceiro terminal, inicie o
Consumer.py. Inscreva-se nas categorias desejadas digitando os números correspondentes, separados por espaço. - Observe as mensagens recebidas no terminal do consumidor, que correspondem às categorias nas quais ele está inscrito.
Dessa forma, cada componente desempenha seu papel na comunicação e na distribuição de dados entre geradores e consumidores.
- Para encerrar qualquer processo, pressione Enter no respectivo terminal.
- As mensagens serão distribuídas para os clientes inscritos nas categorias, de acordo com os dados gerados aleatoriamente.
Cada arquivo possui uma função específica dentro do projeto:
-
Info.py: Define a classe
Info, que encapsula os dados de uma mensagem. Os atributossequence,category, evaluerepresentam cada mensagem enviada e recebida entre os geradores e consumidores. -
Consumer.py: Cria um cliente TCP, permitindo ao usuário inscrever-se em categorias de interesse e exibindo as mensagens recebidas do servidor.
-
Distributor.py: Gerencia as conexões TCP dos clientes, organiza as filas de categorias e distribui as mensagens, recebidas via UDP dos geradores, para os clientes inscritos em cada categoria.
-
Generator.py: Gera mensagens aleatórias associadas a diferentes categorias e as envia ao servidor através de UDP, para serem distribuídas conforme os interesses dos consumidores.
Este projeto foi desenvolvido por:
- Guilherme M. Taglietti (@GuiTaglietti)
- José P. R. Pereira (@JosePRP1)