Compare commits

...

17 Commits

Author SHA1 Message Date
Simon Gonçalves Costa 335d1c4645 APP CORRIGIDO PELO PROF 2026-06-01 19:22:04 -03:00
Simon Gonçalves Costa 011ea38fa8 Configuração do produto não encontrado 2026-05-22 21:12:35 -03:00
Simon Gonçalves Costa 7bf610845a Commit apirest 2026-05-22 19:34:21 -03:00
Simon Gonçalves Costa 322f5f37dd Commit chat 'finalizado2' 2026-05-08 21:38:19 -03:00
Simon Gonçalves Costa 58d4d0b6e5 Commit chat 'finalizado' 2026-05-08 21:32:11 -03:00
Simon Gonçalves Costa 3fafa79fbf Commit chat intermediário 2026-05-08 19:57:33 -03:00
Simon Gonçalves Costa 9502340895 Config do servidor chat 2026-04-17 21:24:06 -03:00
Simon Gonçalves Costa 40e9d97a8a Exemplo 1 Threads 2026-04-17 21:05:29 -03:00
Simon Gonçalves Costa bcd4801dfc Primeira aula de sockets com configuração do cliente 2026-04-10 21:35:09 -03:00
Simon Gonçalves Costa 6723e01b20 Primeira aula de sockets 2026-04-10 21:00:24 -03:00
Simon Gonçalves Costa b67b419e1b adição gitignore2 2026-03-27 21:26:31 -03:00
Simon Gonçalves Costa d4a4ce90cb adição gitignore 2026-03-27 21:24:05 -03:00
Simon Gonçalves Costa 8babc75ad0 ommit os library 2026-03-27 20:47:16 -03:00
Simon Gonçalves Costa 548ea411b9 commit aula2_listas 2026-03-20 21:49:58 -03:00
Simon Gonçalves Costa d2961f970e commit aula2_formatacao 2026-03-20 21:35:48 -03:00
Simon Gonçalves Costa 30dee225de commit aula2_tipagem 2026-03-20 21:11:11 -03:00
Simon Gonçalves Costa f715cb7c7d commit aula2 2026-03-20 20:25:30 -03:00
22 changed files with 357 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
modulo_os/__pycache__
View File
+19
View File
@@ -0,0 +1,19 @@
#Tipo de formatação 1
nome = "Procopio"
classificacao = 1
resultado = "Aluno aprovado:" + nome + " Class" + str(classificacao)
print(resultado)
#Tipo de formatação 2
mensagem = "Conectando Ip %s na porta %d" % ("192.168.0.1",45)
print(mensagem)
#Tipo de formatação 3
mensagem = "Conectando {} na porta {}".format("10.200.103.109", 82)
print(mensagem)
#Tipo de formatação 4
ip = "10.200.109.103"
porta = 1521
mensagem = f"Endereco IP: {ip} e porta {porta}"
print (mensagem)
+11
View File
@@ -0,0 +1,11 @@
#Tipo de lista 1 - lista = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
lista = []
for i in range (10):
lista.append(i)
print(lista)
#Tipo de lista 2 - [operacao for i in lista]
lista = [i for i in range(10)]
lista = [i*2 for i in range(100)]
lista = [f"192.168.0.{i}" for i in range(255)]
print (lista)
+31
View File
@@ -0,0 +1,31 @@
a = 20
a = 3.1415
nome = "Simon"
total = 4596
resultado = 45.45
logico = True
print(type(a))
print(type(nome))
print(type(total))
print(type(resultado))
print(type(logico))
#Definição de funções em Python
def somar (a,b):
soma = a + b
return soma
print (somar(7,9))
def somarTipado(a: int, b: int) -> int:
return a + b
print (somarTipado(45, 45))
"""
from socket import socket
socket.accept()
"""
+7
View File
@@ -0,0 +1,7 @@
port=5000
DB_HOST=
DB_USER=root
DB_PASSWORD=
DB_NAME=loja_redes
DB_PORT=3306
+2
View File
@@ -0,0 +1,2 @@
.venv/
.env
Binary file not shown.
+79
View File
@@ -0,0 +1,79 @@
from flask import Flask, jsonify, request
from flask_cors import CORS
import os
from dotenv import load_dotenv
from db import get_connection
#Carrega arquivo de variáveis de ambiente (.env)
load_dotenv()
#Carrega variável de ambiente PORT. Essa variável contém a porta TCP utilizada na APIREST
PORT = os.getenv("PORT")
#Cria objeto Flask. Esse objeto é necessário para utilização do FLASK
#(módulo python para criação de APIs REST).
app = Flask(__name__)
#Aplica cors no objeto Flask
CORS(app)
#Criar rota de saúde da aplicação
@app.route("/health")
def health():
return jsonify({"message" : "API Flask version 1.0!!!"})
#=============================================================
@app.route("/produtos",methods=["GET"])
def listar_produtos():
conexao = get_connection()
cursor = conexao.cursor(dictionary=True)
cursor.execute("select * from produto")
produtos = cursor.fetchall()
cursor.close()
conexao.close()
return jsonify(produtos)
#=============================================================
@app.route("/produtos/<int:id>", methods=["GET"])
def listar_produto_id(id):
conexao = get_connection()
cursor = conexao.cursor(dictionary=True)
cursor.execute("Select * from produto where id = %s", (id,))
produto = cursor.fetchone()
cursor.close()
conexao.close()
if produto is None:
return jsonify({"erro" : "Produto não encontrado"}), 404
return jsonify(produto)
#=============================================================
@app.route("/produtos",methods=["POST"])
def criar_produto():
dados = request.get_json()
nome = dados.get("nome")
preco = dados.get("preco")
estoque = dados.get("estoque")
if nome is None or preco is None or estoque is None:
return jsonify({"erro" : "Produto inválido"}), 400
conexao = get_connection()
cursor = conexao.cursor()
sql = "insert into produto (nome, preco, estoque) values (%s, %s, %s)"
cursor.execute(sql,(nome, preco, estoque))
conexao.commit()
novo_id = cursor.lastrowid
cursor.close()
conexao.close()
return jsonify({"id" : novo_id, "nome": nome, "preco" : preco, "estoque" : estoque}), 201
#Inicializa o servidor da APIRest
if __name__ == "__main__":
app.run(port=PORT, debug=True)
+17
View File
@@ -0,0 +1,17 @@
import os
import mysql.connector
from dotenv import load_dotenv
load_dotenv()
def get_connection():
return mysql.connector.connect(
host=os.getenv("DB_HOST"),
user=os.getenv("DB_USER"),
password=os.getenv("DB_PASSWORD"),
database=os.getenv("DB_NAME"),
port=os.getenv("DB_PORT")
)
+11
View File
@@ -0,0 +1,11 @@
blinker==1.9.0
click==8.3.3
colorama==0.4.6
Flask==3.1.3
flask-cors==6.0.2
itsdangerous==2.2.0
Jinja2==3.1.6
MarkupSafe==3.0.3
mysql-connector-python==9.7.0
python-dotenv==1.2.2
Werkzeug==3.1.8
+16
View File
@@ -0,0 +1,16 @@
#Criar tabela produto
create table produto (
id int auto_increment primary key,
nome varchar(100) not null,
preco decimal(10,2) not null,
estoque int not null
);
#Carga incial do banco
insert into produto (nome,preco,estoque)
values ('Bola',12.50,10);
insert into produto (nome,preco,estoque)
values ('PS5',3950.50,5);
#Exemplo de consulta
#select * from produto;
Binary file not shown.
+18
View File
@@ -0,0 +1,18 @@
import os
import utilities
import sys
endereco = input("Digite um endereço IP: ")
if not utilities.validar_ip(endereco):
print ("O endereço IP é inválido.")
sys.exit(0)
comando = f"ping {endereco}"
resultado = os.system(comando)
if not resultado:
print("O endereço existe")
else:
print("O endereço não existe")
+8
View File
@@ -0,0 +1,8 @@
import os
print (os.name)
print (os. getcwd())
print(os.environ)
print(os.path)
+8
View File
@@ -0,0 +1,8 @@
def validar_ip (ip : str) -> bool:
octetos = ip.split(".")
if len(octetos) != 4:
return False
for octeto in octetos :
if int (octeto) <0 or int(octeto) > 255:
return False
return True
+44
View File
@@ -0,0 +1,44 @@
import tkinter as tk
from tkinter import scrolledtext
import socket
import threading
def ouvir_servidor(socket_servidor):
while True:
mensagem = socket_servidor.recv(80000)
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()
entrada_mensagem = tk.Entry(janela, width=80)
entrada_mensagem.pack()
def clicar():
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()
area_mensagens = scrolledtext.ScrolledText(janela)
area_mensagens.pack()
area_mensagens.config(state="disabled")
janela.mainloop()
+15
View File
@@ -0,0 +1,15 @@
#Modelo diferente de importação, não precisa utilizar a palavra socket (módulo) antes dos recursos
from socket import *
#Criar objeto socket
cliente = socket(AF_INET,SOCK_STREAM)
#Abrir conexão
conexao = cliente.connect(("10.209.1.45",3000))
#Enviar mensagem
cliente.send("Olá, servidor! Aqui é o Simon".encode())
#
mensagem = cliente.recv(1024)
print(f"Mensagem recebida {mensagem.decode()}")
+27
View File
@@ -0,0 +1,27 @@
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:
try:
mensagem = cliente.recv(8000)
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()
+24
View File
@@ -0,0 +1,24 @@
#Biblioteca padrão para utilização de sockets
import socket
#Criar um objeto socket com AF_INET (IPV4) e SOCK_STREAM (TCP)
servidor = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#Estabelecer vinculo com endereço e uma porta
servidor.bind(("127.0.0.1",3000))
print("Servidor inicializando...")
#Começa a ouvir tentativas de conexão
servidor.listen()
#Aceitar a conexão, recebendo o objeto socket da conexão e o endereço de quem se conectou
conexao, endereco = servidor.accept()
#Recebendo mensagem do cliente. Tenho que converter bytes para string
mensagem = conexao.recv(1024).decode()
print(f"mensagem recebida: {mensagem}")
#Enviar mensagem. Precisa ser em bytes (decode)
conexao.send("Ok, mensagem recebida com sucesso!".encode( ))
+19
View File
@@ -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!")