From e0ccfdf7d8029d7bf15edd6ccde85cbcbd4db324 Mon Sep 17 00:00:00 2001 From: Fernando Luiz de Lima <20251144030025@ifrn.local> Date: Fri, 17 Apr 2026 21:46:48 -0300 Subject: [PATCH] aula de thread --- sockets/cliente_chat.py | 23 +++++++++++++++++++++++ sockets/cliente_tcp.py | 12 ++++++++++++ sockets/servidor_chat.py | 22 ++++++++++++++++++++++ sockets/servidor_tcp.py | 21 +++++++++++++++++++++ thread/exemplo1.py | 19 +++++++++++++++++++ 5 files changed, 97 insertions(+) create mode 100644 sockets/cliente_chat.py create mode 100644 sockets/servidor_chat.py create mode 100644 thread/exemplo1.py diff --git a/sockets/cliente_chat.py b/sockets/cliente_chat.py new file mode 100644 index 0000000..f4912d3 --- /dev/null +++ b/sockets/cliente_chat.py @@ -0,0 +1,23 @@ +import tkinter as tk +from tkinter import scrolledtext + +janela = tk.Tk() +janela.title("chat do IFRN") + +rotulo_mensagem = tk.Label(janela, text="digite sua mensagem: ") +rotulo_mensagem.pack + +entrada_mensagem = tk.Entry(janela, width=80) +entrada_mensagem.pack() + +def clicar(): + print("fui clicado") + +botao = tk.Button(janela, text="enviar", command=clicar) +botao.pack() + +area_mensagem = scrolledtext.ScrolledText(janela) +area_mensagem.pack() +area_mensagem.config(state="disabled") + +janela.mainloop() \ No newline at end of file diff --git a/sockets/cliente_tcp.py b/sockets/cliente_tcp.py index e69de29..e556f75 100644 --- a/sockets/cliente_tcp.py +++ b/sockets/cliente_tcp.py @@ -0,0 +1,12 @@ +# mmodelo de importacao diferente. nao precisa mais +#usar a palavra socket (modulo) antes do recusos +from socket import* + +cliente = socket(AF_INET, SOCK_STREAM) +# abrir conexao +cliente.connect(("10.209.1.45", 3000)) + +cliente.send("Ola, servidor! aqui é o Fernando".encode()) + +mensagem = cliente.recv(1024) +print(f"mensagem recebida{mensagem.decode()}") \ No newline at end of file diff --git a/sockets/servidor_chat.py b/sockets/servidor_chat.py new file mode 100644 index 0000000..6d5acf7 --- /dev/null +++ b/sockets/servidor_chat.py @@ -0,0 +1,22 @@ +import socket +import threading + +servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +servidor.bind(("0.0.0.0", 5000)) +servidor.listen +print ("servidor inicializado!!!") + +clientes = [] + +def ouvir_cliente(cliente): + while True: + mensagem = cliente.recv(1024) + for socket_cliente in clientes: + if socket_cliente != cliente: + socket_cliente.send(mensagem) + +while True: + cliente, enderco_cliente = servidor.accept() + clientes.append(cliente) + thread = threading.Thread(target=ouvir_cliente, args=[cliente,]) + thread.start() \ No newline at end of file diff --git a/sockets/servidor_tcp.py b/sockets/servidor_tcp.py index e69de29..21b54cf 100644 --- a/sockets/servidor_tcp.py +++ b/sockets/servidor_tcp.py @@ -0,0 +1,21 @@ +# blibioteca par autilizacao de sockets +import socket + +#criar um objeto socket com AF_(IPV4) - COCKETSTREAM(TCP) DGRAM (UDP) +servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + +# estabelecer vinculo com endereco e uma porta +servidor.bind(("127.0.0.1", 3000)) + +#comeca a ouvi tentativas de conexao +servidor.listen() + +# aceita conexao recebendo o objeto socket de conexao e o endereco de que conectou +conexao, enederco = servidor.accept() + +# recebendo mensagem do cliente +#tenho que converter bytes para string (decode) +mensagem = conexao.recv(1024).decode() +print(f"mensagem recebida: {mensagem}") +# enviar mensagem. Precisa ser em bytes +conexao.send("ok! mensagem recebida com sucesso".encode()) \ No newline at end of file diff --git a/thread/exemplo1.py b/thread/exemplo1.py new file mode 100644 index 0000000..1e08017 --- /dev/null +++ b/thread/exemplo1.py @@ -0,0 +1,19 @@ +import threading +import time + +# Função que será executada pela thread +def executar(nome_thread, n_iteracoes): + for i in range(n_iteracoes): + print(f"nome da thread: {nome_thread}") + time.sleep(2) #Parar por 2s + +t1 = threading.Thread(target=executar,args=["thread1",15,]) +t2 = threading.Thread(target=executar,args=["thread2",10,]) + +t1.start() +t2.start() + +t1.join +t2.join + +print("final da thread principal") \ No newline at end of file