Conexiones TCP por Python
Conexiones TCP por Python
Server
- Input -> Pide al usuario que ingrese la dirección IP y el puerto en los que el servidor estará escuchando
- host -> IP del servidor
- Port -> Puerto del servidor
Creación del Socket
Desglose
- Crea un socket TCP/IP con
AF_INETpara IPv4 ySOCK_STREAMpara TCP with...-> Asegura que el socket se cierre automáticamente al terminars.bind-> Poner en escuchas.listen-> Configura el servidor para escuchar conexiones entrantes, permitiendo una cola de hasta 1 conexiónconn, addr = s.accept()Espera y acepta una conexión entrante.connes el objeto de conexión yaddres la dirección del clientewith conn:Inicia un bloquewithpara asegurar que la conexión se cierre automáticamente cuando se terminewhile True:Inicia un bucle infinito para manejar la comunicación con el cliente.data = conn.recv(1024)Recibe hasta 1024 bytes de datos del clienteif not data: breakSi no se reciben datos, rompe el bucle y cierra la conexiónconn.sendall(data)Envía de vuelta todos los datos recibidos al cliente (funcionando como un servidor “eco”)start_server()Llama a la función para iniciar el servidor
Este programa crea un servidor simple que escucha en la IP y puerto que el usuario ingresa, aceptando una conexión y devolviendo al cliente cualquier dato que recibe (función de eco)
Cliente
Función start_client()
host = input('Ingrese la dirección del servidor: ')Solicita la dirección del servidorport = int(input('Ingrese el puerto del servidor: ')Solicita el puerto del servidor
Conexión al servidor
Desglose
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:Crea un socket TCP/IP. El uso dewithasegura que el socket se cierre automáticamente al finalizars.connect((host, port))Intenta conectarse al servidor usando la IP y puerto proporcionados.s.sendall(b"\n[+] Mensaje enviado de vuelta con éxito!")Envía un mensaje al servidor. El prefijobconvierte la cadena en un objeto de bytes, que es el formato necesario para enviar datos a través de un socket.data = s.recv(1024)Espera y recibe datos del servidor, almacenando hasta 1024 bytes en la variabledataprint(f"\n[i] El servidor te ha enviado un mensaje: {data.decode()}")Decodifica los datos recibidos de bytes a texto (string) y los muestra en la consolastart_client()Llama a la función para iniciar el cliente.
Este cliente se conecta al servidor especificado, envía un mensaje y luego espera una respuesta. La respuesta del servidor se recibe y se muestra en la consola
This post is licensed under CC BY 4.0 by the author.



