Networking de Python

Networking de Python
Python es un lenguaje de alto nivel diseñado específicamente para facilitar la vida de los desarrolladores. Por otro lado, la programación de red puede ser una tarea tediosa y complicada en otros lenguajes de programación, pero es simple y fácil en un lenguaje de programación de Python. Permite al usuario escribir scripts que puedan automatizar la compleja configuración de red. En este artículo, veremos cómo realizar la programación de red utilizando Python.

¿Cómo se usa Python en las redes??

El lenguaje de programación de Python juega un papel vital en la programación de redes. Python tiene una biblioteca estándar incorporada que proporciona un soporte completo para la codificación y decodificación de datos, los protocolos de red y todos los demás conceptos de redes. Escribir los códigos para la programación de redes en Python es mucho más fácil que en C ++ o Java. El lenguaje de programación de Python proporciona dos niveles de acceso al servicio de red: acceso de bajo nivel y de alto nivel. El acceso de bajo nivel ofrece el soporte básico de socket del sistema operativo. Mientras que el acceso de alto nivel permite los protocolos de implementación como FTP. Http, etc.

Este artículo lo ayudará con una comprensión básica del concepto más famoso de redes en Python, que es la programación de sockets.

¿Qué son los enchufes??

Los enchufes proporcionan un canal de comunicación bidireccional entre dos puntos finales. Procesos en otras máquinas, procesos en la misma máquina y Socket logra comunicarse con todos. Se pueden implementar en diferentes canales como UDP, TCP, Sockets de dominio UNIX, etc. La biblioteca Socket en Python proporciona diferentes clases para administrar la transferencia de datos comunes o una interfaz genérica para administrar el resto. Los enchufes usan varios tipos de protocolos para determinar la conexión de puerto a puerto entre servidores y clientes. Estos protocolos se utilizan para FTP, SMTP, correo electrónico, dirección IP, DNS, etc. El vocabulario de los enchufes es diferente. Eche un vistazo a la siguiente ilustración:

Término Descripción
Dominio Conjunto de protocolos utilizados como mecanismo de transporte.
Tipo Define el tipo de comunicación entre enchufes.
Protocolo Determina el tipo de protocolo dentro del tipo y dominio.
Puerto Un punto de escucha a través del cual los servidores escuchan al cliente llaman. Consiste en el nombre de un servicio, una cadena que contiene el número de puerto y un número de puerto FixNum.
Nombre de host Identifica una interfaz de red y consta de las siguientes cosas:

Una cadena "" que identifica la dirección de transmisión.

Una cadena de longitud cero.

Una cadena que contiene el nombre de host, una dirección de doble quad o una dirección IPv6.

Un entero que define la dirección binaria en el pedido de bytes host.

¿Qué es la programación de socket??

La programación de socket conecta dos nodos en una red de comunicación. Un nodo es el oyente que comúnmente se conoce como servidor, y el otro se comunica con el servidor que comúnmente se conoce como cliente. Para la programación de socket en Python, el módulo de socket debe incluirse.

Exploremos algunos ejemplos para aprender a implementar la programación de red en Python.

Ejemplo 1:

En este ejemplo, aprenderemos la sintaxis del módulo de socket y cómo importarlo en un programa de Python. Primero, importamos el módulo de socket en el programa Python utilizando la instrucción "Importar socket". Entonces, podemos usar las funciones de los módulos de socket. Aquí está la sintaxis del módulo Socket ():

TOCKETOR DE IMPORTA
socketmodule = socket.enchufe (enchufe.Af_inet, enchufe.Sock_stream)
Imprimir (SocketModule)

Ahora ejecutemos la declaración para ver qué devuelve:

Aquí está la siguiente salida:

Ejemplo 2:

Ahora, aprendamos cómo crear un servidor simple y un cliente simple y ver cómo se comunican entre sí.

Aquí está la codificación del lado del servidor:

Primero, importe un socket y luego cree un objeto de socket:

Importar el socket como S
socketmodule = socket.enchufe()

Obtenga el nombre de la máquina llamando a la declaración GethostName ():

hostname = socket.gethostName ()

Proporcione el número de puerto que desea que el servidor haga una conexión entre el servidor y el cliente:

Portnum = 12345

Ahora, ata el host con el puerto para iniciar una conexión:

s.Bind ((Nombre de host, Portnum))

El siguiente paso es esperar la conexión del cliente:

socketmodule.Escucha (5)

Finalmente, establezca una conexión con el cliente:

Mientras que es cierto:
A, ADR = S.aceptar()
Imprimir ('Conexión recibida de', ADR)
a.Enviar (B'T -Banks para conectar ')
a.cerca()

La siguiente es la codificación del lado del cliente:

Para iniciar una conexión, el módulo de socket debe importarse en el lado del cliente al igual que se importó en el lado del servidor:

Importar el socket como S
socketmodule = socket.enchufe()

Siga el mismo proceso, obtenga el nombre de la máquina local y reserve el puerto que el servidor reservó para establecer una conexión:

hostname = socket.gethostName ()
Portnum = 12345

Ahora, conecte el host con el puerto y haga una conexión entre ellos:

socketmodule.conectar (('127.0.0.1 ', portnum))
Imprimir (SocketModule.Recv (1024))
s.cerca()

Una vez que haya terminado con la codificación del cliente y del lado del servidor, inicie tanto el servidor como el cliente en segundo plano para ver los resultados:

Después de una conexión exitosa, verá la siguiente salida:

Ejemplo 3:

Veamos otro ejemplo para tener una comprensión más clara de cómo se conecta el servidor con el cliente, así como cómo el servidor escucha al cliente.

Aquí está la codificación del lado del servidor:

Para la codificación del lado del servidor, siga el mismo proceso. Importar el socket, crear un módulo de socket, reservar el número de puerto, unir el host y el puerto y escuchar al cliente. Si puede observar, la condición "si" se agrega al bucle para verificar una condición particular. Vea el siguiente código:

TOCKETOR DE IMPORTA
Portnum = 60
IPadrs = '127.0.0.1 '
Buffers = 30
socketmodule = socket.enchufe (enchufe.Af_inet, enchufe.Sock_stream)
socketmodule.Bind ((iPadrs, Portnum))
socketmodule.Escucha (1)
Conn, ADRS = SocketModule.aceptar()
Imprimir ('La dirección de la conexión es:', ADRS)
Mientras que es cierto:
datos = Conn.Recv (buffers)
Si no es datos:
romper
imprimir ("Los datos recibidos son:", datos)
estafa.enviar datos)
estafa.cerca()

La siguiente es la codificación del lado del cliente:

El proceso de hacer una conexión en el lado del cliente es nuevamente, lo mismo. Importar el socket, crear un módulo de socket, reservar el número de puerto y conectar el puerto con el host:

TOCKETOR DE IMPORTA
Portnum = 5006
IPadrs = '127.0.0.1 '
Buffers = 1024
Printmessage = "Hola! Soy un mensaje del cliente."
socketmodule = socket.enchufe (enchufe.Af_inet, enchufe.Sock_stream)
socketmodule.Connect ((iPadrs, Portnum))
socketmodule.Enviar (printmessage)
Data = SocketModule.Recv (buffers)
socketmodule.cerca

Ahora, observe que el cliente envía un mensaje al servidor: "Hola! Soy un mensaje del cliente ". Este mensaje es recibido por el servidor y se imprime.

Después de la conexión exitosa entre el servidor y el cliente, podrá ver la siguiente salida:

Conclusión

Esta es una descripción básica de la programación de socket en Python y un comienzo rápido con la implementación. Sin embargo, es un tema vasto y contiene muchos detalles con una codificación compleja. Una vez que se ponga práctico con estos programas simples, podrá entrar en la profundidad de la programación de sockets.