Buscar

praticando aula 4

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.

Continue navegando