Indietronica_Hardtech_Piton/cliente.py

108 lines
3.1 KiB
Python
Executable File

# menu_cliente.py
import socket
import os
import subprocess
def limpiar_pantalla():
"""Limpia la pantalla (funciona en Linux y Mac)"""
subprocess.run('clear', shell=True)
def mostrar_menu():
print("🖥️ ENVIADOR DE ARCHIVOS")
print("=" * 30)
print("1. 📱 Enviar a Linux")
print("2. 🍎 Enviar a Mac")
print("3. 🪟 Enviar a Windows")
print("4. 🚪 Salir")
print("=" * 30)
def obtener_ip(dispositivo):
"""Pide la IP según el dispositivo"""
ips = {
"Linux": "Ej: 192.168.1.100",
"Mac": "Ej: 192.168.1.101",
"Windows": "Ej: 192.168.1.102"
}
print(f"\n📍 Configurando envío a {dispositivo}")
ip = input(f"IP del {dispositivo} ({ips[dispositivo]}): ")
return ip
def enviar_archivo(ruta, ip_servidor):
"""Función para enviar archivo (la misma de antes)"""
if not os.path.exists(ruta):
print("❌ El archivo no existe")
input("Presiona Enter para continuar...")
return False
try:
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((ip_servidor, 5000))
nombre = os.path.basename(ruta)
tamaño = os.path.getsize(ruta)
client.send(f"{nombre}|{tamaño}".encode())
print(f"📤 Enviando: {nombre}...")
with open(ruta, "rb") as f:
while True:
datos = f.read(4096)
if not datos:
break
client.send(datos)
respuesta = client.recv(1024).decode()
print(f"{respuesta}")
client.close()
input("Presiona Enter para continuar...")
return True
except Exception as e:
print(f"❌ Error: No se pudo conectar a {ip_servidor}")
input("Presiona Enter para continuar...")
return False
def main():
while True:
limpiar_pantalla()
mostrar_menu()
opcion = input("\nSelecciona una opción (1-4): ")
if opcion == "1":
limpiar_pantalla()
print("🖥️ ENVIAR A LINUX")
print("=" * 25)
ip = obtener_ip("Linux")
archivo = input("📁 Ruta del archivo a enviar: ")
enviar_archivo(archivo, ip)
elif opcion == "2":
limpiar_pantalla()
print("🍎 ENVIAR A MAC")
print("=" * 25)
ip = obtener_ip("Mac")
archivo = input("📁 Ruta del archivo a enviar: ")
enviar_archivo(archivo, ip)
elif opcion == "3":
limpiar_pantalla()
print("🪟 ENVIAR A WINDOWS")
print("=" * 25)
ip = obtener_ip("Windows")
archivo = input("📁 Ruta del archivo a enviar: ")
enviar_archivo(archivo, ip)
elif opcion == "4":
print("👋 ¡Hasta luego!")
break
else:
print("❌ Opción inválida")
input("Presiona Enter para continuar...")
if __name__ == "__main__":
main()