Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

Python - Programación de red

Página anterior Página siguiente

Python proporciona dos niveles de acceso a los servicios de red. En un nivel bajo, puede acceder al soporte básico de sockets en el sistema operativo subyacente, lo que le permite implementar clientes y servidores para protocolos orientados a la conexión y sin conexión.

Python también tiene bibliotecas que brindan acceso de alto nivel a protocolos de red específicos de nivel de aplicación, como FTP, HTTP, etc.

Este capítulo le brinda comprensión sobre el concepto más famoso de redes:programación de sockets.

¿Qué son los sockets?

Los sockets son los puntos finales de un canal de comunicaciones bidireccional. Los sockets pueden comunicarse dentro de un proceso, entre procesos en la misma máquina o entre procesos en diferentes continentes.

Los sockets se pueden implementar en varios tipos de canales diferentes:sockets de dominio Unix, TCP, UDP, etc. El enchufe La biblioteca proporciona clases específicas para manejar los transportes comunes, así como una interfaz genérica para manejar el resto.

Los sockets tienen su propio vocabulario -

Sr.No. Término y descripción
1

Dominio

La familia de protocolos que se utiliza como mecanismo de transporte. Estos valores son constantes como AF_INET, PF_INET, PF_UNIX, PF_X25, etc.

2

tipo

El tipo de comunicaciones entre los dos puntos finales, normalmente SOCK_STREAM para protocolos orientados a conexión y SOCK_DGRAM para protocolos sin conexión.

3

protocolo

Normalmente cero, esto puede usarse para identificar una variante de un protocolo dentro de un dominio y tipo.

4

nombre de host

El identificador de una interfaz de red -

  • Una cadena, que puede ser un nombre de host, una dirección de cuatro puntos con puntos o una dirección IPV6 en notación de dos puntos (y posiblemente un punto)

  • Una cadena "", que especifica una dirección INADDR_BROADCAST.

  • Una cadena de longitud cero, que especifica INADDR_ANY o

  • Un entero, interpretado como una dirección binaria en orden de bytes del host.

5

puerto

Cada servidor escucha a los clientes que llaman a uno o más puertos. Un puerto puede ser un número de puerto Fixnum, una cadena que contenga un número de puerto o el nombre de un servicio.

El zócalo Módulo

Para crear un socket, debe usar socket.socket () función disponible en socket módulo, que tiene la sintaxis general -

 s =socket.socket (socket_family, socket_type, protocol =0) 

Aquí está la descripción de los parámetros:

  • familia_enchufe - Esto es AF_UNIX o AF_INET, como se explicó anteriormente.

  • tipo_enchufe - Esto es SOCK_STREAM o SOCK_DGRAM.

  • protocolo - Por lo general, se omite y el valor predeterminado es 0.

Una vez que tenga socket objeto, entonces puede utilizar las funciones necesarias para crear su programa cliente o servidor. A continuación se muestra la lista de funciones necesarias:

Métodos de socket del servidor

Sr.No. Método y descripción
1

s.bind ()

Este método vincula la dirección (nombre de host, par de número de puerto) al socket.

2

escuchar ()

Este método configura e inicia el oyente TCP.

3

aceptar ()

Esto acepta pasivamente la conexión del cliente TCP, esperando hasta que llegue la conexión (bloqueo).

Métodos de socket de cliente

Sr.No. Método y descripción
1

s.connect ()

Este método inicia activamente la conexión al servidor TCP.

Métodos de socket generales

Sr.No. Método y descripción
1

s.recv ()

Este método recibe un mensaje TCP

2

enviar ()

Este método transmite un mensaje TCP

3

s.recvfrom ()

Este método recibe un mensaje UDP

4

s.sendto ()

Este método transmite mensaje UDP

5

s.close ()

Este método cierra el socket

6

socket.gethostname ()

Devuelve el nombre de host.

Un servidor simple

Para escribir servidores de Internet, usamos el socket función disponible en el módulo socket para crear un objeto socket. A continuación, se utiliza un objeto de socket para llamar a otras funciones para configurar un servidor de socket.

Ahora llame a bind (nombre de host, puerto) función para especificar un puerto para su servicio en el host especificado.

A continuación, llame al aceptar método del objeto devuelto. Este método espera hasta que un cliente se conecta al puerto que especificó y luego devuelve una conexión objeto que representa la conexión con ese cliente.

 #! / usr / bin / python # Este es server.py fileimport socket # Import socket modules =socket.socket () # Crea un socket objecthost =socket.gethostname () # Obtiene la máquina local nameport =12345 # Reserve un puerto para su service.s.bind ((host, port)) # Bind to the ports.listen (5) # Ahora espere la conexión del cliente. # Establecer conexión con el cliente. print 'Obtuve conexión desde', addr c.send ('Gracias por conectarte') c.close () # Cerrar la conexión 

Un cliente simple

Escribamos un programa cliente muy simple que abre una conexión a un puerto determinado 12345 y un host determinado. Esto es muy simple para crear un cliente de socket usando el socket de Python función del módulo.

socket.connect (nombre de host, puerto) abre una conexión TCP a nombre de host en el puerto . Una vez que tenga un socket abierto, puede leerlo como cualquier objeto IO. Cuando termine, recuerde cerrarlo, como cerraría un archivo.

El siguiente código es un cliente muy simple que se conecta a un host y puerto determinados, lee cualquier dato disponible del socket y luego sale -

 #! / usr / bin / python # Esto es client.py fileimport socket # Import socket modules =socket.socket () # Crear un socket objecthost =socket.gethostname () # Obtener la máquina local nameport =12345 # Reserve un puerto para su service.s.connect ((host, port)) print s.recv (1024) s.close () # Cierre el socket cuando termine 

Ahora ejecute este server.py en segundo plano y luego ejecute arriba de client.py para ver el resultado.

 # Lo siguiente iniciaría un servidor en segundo plano. $ python server.py &# Una vez iniciado el servidor, ejecute el cliente de la siguiente manera:$ python client.py 

Esto produciría el siguiente resultado:

 Obtuve conexión de ('127.0.0.1', 48437) Gracias por conectarse 

Módulos de Internet de Python

Una lista de algunos módulos importantes en la programación de Python Network / Internet.

Protocolo Función común Número de puerto Módulo de Python
HTTP Páginas web 80 httplib, urllib, xmlrpclib
NNTP Noticias de Usenet 119 nntplib
FTP Transferencias de archivos 20 ftplib, urllib
SMTP Envío de correo electrónico 25 smtplib
POP3 Obteniendo correo electrónico 110 poplib
IMAP4 Obteniendo correo electrónico 143 imaplib
Telnet Líneas de comando 23 telnetlib
Gopher Transferencias de documentos 70 gopherlib, urllib

Verifique que todas las bibliotecas mencionadas anteriormente funcionen con los protocolos FTP, SMTP, POP e IMAP.

Lecturas adicionales

Este fue un comienzo rápido con la programación de sockets. Es un tema vasto. Se recomienda pasar por el siguiente enlace para encontrar más detalles:

  • Programación de Sockets Unix.

  • Módulos y biblioteca de sockets de Python.


python

  1. Tutorial de CALENDARIO de Python con ejemplo
  2. Arreglos de Python:Crear, Revertir, Pop con Ejemplos de Arreglos de Python
  3. Python Devuelve varios valores
  4. Clases de Python
  5. Python Obtener la hora actual
  6. Diccionario Python (Dict):Actualizar, Cmp, Len, Ordenar, Copiar, Elementos, str Ejemplo