Baixe o app para aproveitar ainda mais
Prévia do material em texto
CURSO: Análise e desenvolvimento de sistemas POLO DE APOIO PRESENCIAL: SEMESTRE: 3° semestre COMPONENTE CURRICULAR / TEMA: Comunicação de dados NOME COMPLETO DO ALUNO: Flávio Morales TIA: 22504907 NOME DO PROFESSOR: Patricia Bonezi Nunes criando servidor import socket import threading # Configuração do servidor host = '127.0.0.1' port = 12345 # Lista de clientes conectados clients = [] # Inicializa o servidor server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((host, port)) server.listen() # Função para enviar mensagens para todos os clientes def broadcast(message, client_socket): for client in clients: if client != client_socket: try: client.send(message.decode('utf-8').encode('utf-8')) except: remove(client) # Função para remover um cliente def remove(client_socket): if client_socket in clients: clients.remove(client_socket) # Função para lidar com as mensagens recebidas de um cliente def handle_client(client_socket): while True: try: message = client_socket.recv(1024) if not message: break broadcast(message, client_socket) except: # Remove o cliente se a conexão estiver com problemas remove(client_socket) break # Loop principal para aceitar conexões de clientes while True: client_socket, client_address = server.accept() clients.append(client_socket) print(f"Nova conexão de {client_address[0]}:{client_address[1]}") client_handler = threading.Thread(target=handle_client, args=(client_socket,)) client_handler.start() Criando o cliente import socket import threading # Configuração do cliente host = '127.0.0.1' port = 12345 # Conecta-se ao servidor client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((host, port)) # Função para enviar mensagens ao servidor def send_message(): while True: message = input() client.send(message.encode('utf-8')) # Função para receber mensagens do servidor def receive_message(): while True: try: message = client.recv(1024) print(message.decode('utf-8')) except: # Caso ocorra algum erro na conexão client.close() break # Inicia threads para enviar e receber mensagens send_thread = threading.Thread(target=send_message) receive_thread = threading.Thread(target=receive_message) send_thread.start() receive_thread.start() Com esses dois scripts, podemos executar o servidor e vários clientes em máquinas diferentes. Os clientes poderão se comunicar entre si enviando mensagens ao servidor, que, por sua vez, encaminhará essas mensagens para todos os outros clientes conectados.
Compartilhar