From 63b89b59ae91360dbd682a92199e6528340ea4d1 Mon Sep 17 00:00:00 2001 From: Joao Date: Fri, 8 May 2026 21:20:40 -0300 Subject: [PATCH] Chat finalizado --- sockets/cliente_chat.py | 28 ++++++++++++++++++++++++---- sockets/servidor_chat.py | 13 +++++++++---- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/sockets/cliente_chat.py b/sockets/cliente_chat.py index 1b4629d..a5b1c31 100644 --- a/sockets/cliente_chat.py +++ b/sockets/cliente_chat.py @@ -1,9 +1,24 @@ import tkinter as tk from tkinter import scrolledtext +import socket +import threading + +def ouvir_servidor(socket_servidor): + while True: + mensagem = socket_servidor.recv(8000) + area_mensagens.config(state="normal") + area_mensagens.insert(tk.END, mensagem.decode() + "\n") + area_mensagens.config(state="disabled") + +socket_servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +socket_servidor.connect(("10.209.1.45",5000)) + +thread = threading.Thread(target=ouvir_servidor, args=[socket_servidor,]) +thread.start() janela = tk.Tk() janela.title("Chat do IFRN") - + rotulo_mensagem = tk.Label(janela, text="Digite sua mensagem") rotulo_mensagem.pack() @@ -11,7 +26,13 @@ entrada_mensagem = tk.Entry(janela, width=80) entrada_mensagem.pack() def clicar(): - print("Fui clicado") + mensagem = entrada_mensagem.get() + print(mensagem) + socket_servidor.send(mensagem.encode()) + entrada_mensagem.delete(0, tk.END) + area_mensagens.config(state="normal") + area_mensagens.insert(tk.END, mensagem + "\n") + area_mensagens.config(state="disabled") botao = tk.Button(janela, text="Enviar", command=clicar) botao.pack() @@ -20,5 +41,4 @@ area_mensagens = scrolledtext.ScrolledText(janela) area_mensagens.pack() area_mensagens.config(state="disabled") -janela.mainloop() - +janela.mainloop() \ No newline at end of file diff --git a/sockets/servidor_chat.py b/sockets/servidor_chat.py index dfca560..c30133c 100644 --- a/sockets/servidor_chat.py +++ b/sockets/servidor_chat.py @@ -10,13 +10,18 @@ clientes = [] def ouvir_cliente(cliente): while True: - mensagem = cliente.recv(1024) - for socket_cliente in clientes: - if socket_cliente != cliente: - socket_cliente.send(mensagem) + try: + mensagem = cliente.recv(1024) + for socket_cliente in clientes: + if socket_cliente != cliente: + socket_cliente.send(mensagem) + except Exception as e: + print(f"Ocorreu um erro inesperado: {e}") + return while True: cliente, endereco_cliente = servidor.accept() + print("Cliente conectado:", endereco_cliente) clientes.append(cliente) thread = threading.Thread(target=ouvir_cliente, args=[cliente,]) thread.start() \ No newline at end of file