Descarga de enchufe de Python

Abid Ullah 15 febrero 2024
  1. Descarga de enchufe de Python
  2. Vaciar un socket en Python
Descarga de enchufe de Python

En este artículo, veremos cómo el módulo socket de Python proporciona una interfaz de bajo nivel para la implementación del socket de red subyacente. Veremos algunos métodos importantes en los módulos socket en Python.

También revisaremos algunos códigos de Python para comprender cómo enviar mensajes del servidor al cliente usando Python. Vamos a empezar.

Descarga de enchufe de Python

¿Alguna vez nos hemos preguntado cómo vaciar un socket en Python? Si es así, no estamos solos.

Vaciar un socket es común con las aplicaciones en red, pero la mayoría de las personas necesitan ayuda para comprender cómo funciona.

En este artículo de Python, veremos qué es el vaciado de sockets y cómo funciona. También discutiremos cómo vaciar un socket en Python.

Lavado de enchufe definido

Cuando descargamos un socket, borramos su búfer interno. Este búfer almacena datos que están esperando para ser enviados o recibidos.

A menudo es necesario vaciar un socket para garantizar que todos los datos en el búfer se envíen o reciban.

Por ejemplo, si enviamos datos a un servidor remoto, es posible que queramos vaciar el socket para asegurarnos de que todos los datos se envíen antes de que se cierre la conexión.

La función de vaciado de socket de Python se utiliza para vaciar el búfer de escritura del socket. Esta función generalmente se usa para garantizar que todos los datos en el búfer se envíen antes de que se cierre el socket.

Proceso de limpieza del enchufe

Cuando descargamos un socket, los datos en el búfer se envían o reciben inmediatamente. El sistema operativo (Windows, Mac o Linux) generalmente maneja el proceso de vaciar un socket.

En la mayoría de los casos, no necesitamos preocuparnos por los detalles de cómo funciona el lavado de encaje. Sin embargo, es importante comprender que los datos en el búfer se envían o reciben de inmediato, lo que significa que los datos podrían perderse si la conexión se cierra antes de que se envíen todos los datos.

Vaciar un socket en Python

Vaciar un socket en Python es relativamente simple. El proceso es similar a vaciar un archivo en Python.

Como vemos, el proceso es bastante sencillo. Sin embargo, es importante recordar que los datos en el búfer se envían de inmediato, por lo que debemos tener cuidado de asegurarnos de que todos los datos se envíen antes de que se cierre la conexión.

Debemos importar el módulo o marco socket para lograr la programación de socket en Python. Este módulo consta de métodos incorporados necesarios para crear sockets y ayudarlos a asociarse entre sí.

Métodos importantes del módulo socket:

  1. socket.socket(): se utiliza para crear sockets (requerido tanto en el servidor como en el cliente para crear sockets).
  2. socket.accept(): Se utiliza para aceptar una conexión. Devuelve un par de valores (conn, “dirección”).
  3. socket.bind(): Se utiliza para vincular a la dirección especificada como parámetro.
  4. socket.close(): se utiliza para vincular a la dirección especificada como parámetro.
  5. socket.connect(): marca el socket como cerrado.
  6. socket.listen(): se utiliza para conectarse a una dirección remota especificada como parámetro.

Servidor

Ahora vamos a crear un archivo y darle un nombre. En nuestro caso, hemos llamado al archivo SERVER1.py.

Ahora comenzaremos a escribir el código para el servidor.

Entonces, primero, importaremos la biblioteca socket. Luego usaremos el método socket.socket() para crear un socket y asignarlo a sock.

Y dentro del paréntesis, especificaremos la familia de direcciones como AF_INET, usando un socket.AF_INET. Tenga en cuenta que AF_INET se refiere a una dirección de Internet.

Y requiere un par de hosts y un número de puerto. El host puede usar una URL de algún sitio web en particular o su dirección o número de puerto como un número entero.

El segundo parámetro que especificaremos es un socket.SOCK_STREAM. El SOCK_STREAM se utiliza para crear protocolos TCP.

Lo siguiente que tenemos que hacer es escribir la función bind. El método bind acepta dos parámetros como una tupla, por lo que, en conjunto, será un parámetro.

Coincide con un host y un número de puerto. Como parámetro usaremos un socket.gethostname(), 1024.

Usamos el método bind porque queremos que el servidor se enlace con el cliente.

Ahora usaremos el método escuchar y pasaremos cualquier número. En nuestro caso, hemos pasado 5.

Ahora usaremos un bucle para que mientras la conexión sea Verdadera, queremos que el servidor acepte el socket del cliente y su dirección. Usaremos el método aceptar para esto.

Una vez que recibamos el socket del cliente y su dirección, lo imprimiremos. Usaremos el método print, y en el método print, usaremos la cadena f.

La cadena f es una cadena literal, con el prefijo f, y contiene expresiones de Python entre paréntesis. Dentro de la sentencia print, daremos un mensaje Conexión a {adr} establecida..

Entonces, una vez que se establece la conexión, queremos pasar algunos mensajes del servidor al cliente. Para ello, utilizaremos c.send.

Y como necesitamos un byte, lo especificaremos. Dentro de este, escribiremos nuestro mensaje.

En nuestro caso, nuestro mensaje es Programación de sockets en Python. Debido a que hemos usado bytes, debemos escribir qué tipo de byte.

En nuestro caso, escribiremos utf-8. Nuestro servidor ya está listo.

Código de ejemplo:

import socket

# We imported the socket library
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((socket.gethostname(), 1024))
sock.listen(5)
while True:
    clt, adr = sock.accept()
    print(f"Connection to {adr} established.")
    clt.send(bytes("Socket programming in Python", "utf-8"))

Notaremos que el cursor parpadea en el símbolo del sistema. Ahora pasaremos al cliente.

Cliente

Entonces, abriremos un nuevo archivo en el mismo directorio y le daremos un nombre.

En nuestro caso, hemos llamado al archivo CLIENTE1.py. Lo primero que haremos será importar la librería socket.

Ahora usaremos el método socket para crear un socket para el cliente. De la misma manera que creamos para el servidor.

Ahora, queremos que nuestro cliente se conecte con el servidor. Entonces, usaremos el método conectar y especificaremos el parámetro como gethostname junto con el mismo número de puerto que usamos en el servidor. Así que es 1024.

Ahora tenemos que guardar el mensaje en una variable. En nuestro caso, lo llamaremos msg.

Usaremos el método recv para recibir el mensaje. A este método recv, podemos especificar cualquier número de bytes como parámetro.

Ese parámetro será recibido en una comunicación entre el servidor y el cliente. Entonces, en nuestro primer caso, usaremos 1024.

Después de esto, imprimiremos el número que hemos recibido. Debido a que el mensaje que se está transfiriendo está codificado, tendremos que usar el byte utf-8 para decodificarlo.

Código de ejemplo:

import socket

# We imported the socket library
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((socket.gethostname(), 1024))
msg = sock.recv(1024)
print(msg.decode("utf-8"))

Nuestros archivos de servidor y cliente están listos para su ejecución.

archivos del servidor y del cliente en la misma carpeta

Abriremos el símbolo del sistema en la misma carpeta para ejecutar estos archivos y escribiremos primero la ruta del servidor como py Filename.py. Entonces, en nuestro caso, lo escribiremos como py SERVER1.py y presionaremos Enter.

Allí veremos parpadear el cursor.

Luego abriremos otro símbolo del sistema para ejecutar el segundo archivo como py Filename.py. En nuestro caso, lo escribiremos como py CLIENT1.py y pulsaremos Enter.

Producción:

se establece la conexión entre el cliente y el servidor

Una vez que ejecutemos ambos archivos, recibiremos el mensaje Programación de sockets en Python.

Vaciar un socket es una tarea común cuando se trabaja con aplicaciones en red. El proceso es relativamente simple, pero es importante recordar que los datos del búfer se envían inmediatamente.

Cuando se trabaja con aplicaciones en red, es importante entender cómo funciona el vaciado de sockets. Podríamos vaciar fácilmente un socket en Python con un poco de práctica.

Esperamos que este artículo de Python le resulte útil para entender cómo vaciar el socket de Python.

Autor: Abid Ullah
Abid Ullah avatar Abid Ullah avatar

My name is Abid Ullah, and I am a software engineer. I love writing articles on programming, and my favorite topics are Python, PHP, JavaScript, and Linux. I tend to provide solutions to people in programming problems through my articles. I believe that I can bring a lot to you with my skills, experience, and qualification in technical writing.

LinkedIn

Artículo relacionado - Python Socket