>> Tecnologia Eletrônica >  >> Telefones >> Secretárias Eletrônicas

Enviando Mensagens Entre PCs em Rede: Tutorial Python Socket

Precisa enviar uma mensagem de um computador para outro na mesma rede? A biblioteca socket do Python torna isso direto. Aqui está um exemplo completo e anotado.

Pré-requisitos

  • Ambos PCs na mesma rede local (LAN/Wi-Fi)
  • Python 3.x instalado em ambas máquinas
  • Firewall permitindo tráfego na porta escolhida (padrão: 1234)
  • Hostname ou IP local do PC alvo

Lado Servidor (Receptor) — Rode Isto Primeiro

import socket # Criar socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('0.0.0.0', 1234)) # Escuta em todas interfaces server.listen(1) print("Aguardando conexão...") conn, addr = server.accept() print(f"Conectado por {addr}") while True: data = conn.recv(1024).decode() if not data: break print(f"Recebido: {data}") response = input("Resposta: ") conn.send(response.encode()) conn.close() 

Lado Cliente (Remetente)

import socket # Obter hostname/IP alvo hostname = input("Digite hostname ou IP alvo: ") # Criar socket e conectar client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((hostname, 1234)) # Enviar mensagem message = input("Digite mensagem: ") client.send(message.encode()) # Receber resposta response = client.recv(1024).decode() print(f"Resposta: {response}") client.close() 

Conceitos-Chave Explicados

  • AF_INET: Endereçamento IPv4
  • SOCK_STREAM: TCP (confiável, ordenado)
  • bind(): Servidor reivindica a porta
  • listen()/accept(): Servidor aguarda conexões
  • connect(): Cliente inicia conexão
  • send()/recv(): Comunicação bidirecional

Considerações para Produção

Para aplicações reais, adicione: tratamento de erros (try/except), timeouts, enquadramento de mensagens (prefixos de tamanho ou delimitadores), criptografia (SSL/TLS), autenticação, e threading para conexões concorrentes.

Alternativa: Bibliotecas de Alto Nível

Considere asyncio, websockets, ZeroMQ, ou abordagens baseadas em HTTP (Flask/FastAPI) para aplicações de rede mais robustas.