← Volver
El módulo estándar
Ahora bien, para crear una conexión TCP necesitamos dos archivos: uno para el servidor y otro para el cliente. El servidor debe crear un objeto
Una vez ejecutado el servidor, debemos crear y ejecutar el cliente. Éste emplea la función
Ambos puntos de la conexión pueden enviar y recibir datos vía los métodos
Cómo crear una conexión TCP cliente/servidor
socket
provee una interfaz de bajo nivel para crear conexiones de tipo TCP y UDP. Para crear servidores con una interfaz de más alto nivel, véase el módulo estándar socketserver
. Para proyectos medianos y grandes, considérense soluciones más completas como Twisted o gevent.Ahora bien, para crear una conexión TCP necesitamos dos archivos: uno para el servidor y otro para el cliente. El servidor debe crear un objeto
socket
e indicar que escuchará peticiones en una dirección de IP (local o pública) y un puerto determinados.#!/usr/bin/env python
# -*- coding: utf-8 -*-
from socket import socket
# Crear el socket.
with socket() as s:
# Asociarlo a una dirección de IP y un puerto.
s.bind(("localhost", 6190))
# Indicar que este socket actuará como servidor.
s.listen()
# Esperar a la conexión del cliente.
print("Esperando al cliente...")
conn, address = s.accept()
print(f"address[0]:address[1] se ha conectado.")
# Esperar a que el cliente envíe datos.
while True:
data = conn.recv(1024)
# Chequear que no esté vacío.
if data:
# Imprimirlo en pantalla y cerrar el socket.
print("El cliente ha enviado:", data)
break
# El socket se cierra automáticamente al salir del bloque "with".
print("Conexión cerrada.")
Una vez ejecutado el servidor, debemos crear y ejecutar el cliente. Éste emplea la función
create_connection()
para conectarse al servidor y enviar datos a través de la conexión.#!/usr/bin/env python
# -*- coding: utf-8 -*-
from socket import create_connection
# Conectar al servidor.
with create_connection(("localhost", 6190)) as conn:
print("Conectado al servidor.")
# Enviar datos.
conn.sendall(b"Hola mundo!")
print("Conexión cerrada.")
Ambos puntos de la conexión pueden enviar y recibir datos vía los métodos
sendall()
y recv(n)
(en donde n
indica el tamaño del buffer en bytes, típicamente 1024).👨💻 ¡Ya lanzamos el curso oficial de Recursos Python en Udemy! Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter en 2024.
🐍 También te puede interesar:
💡 Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.