Enviar cadena usando Python Socket

Zeeshan Afridi 30 enero 2023
  1. Sockets en Python
  2. Métodos integrados para lograr sockets en Python
  3. Cliente y servidor en la programación de socket
  4. Enviar cadena usando comunicación cliente-servidor en Python Socket
Enviar cadena usando Python Socket

En este artículo, cubriremos los sockets, los métodos integrados en los sockets, el servidor y el cliente, y cómo lograr una comunicación exitosa con los sockets en Python. Los sockets desempeñan el papel de puente entre el servidor y el cliente para recibir y enviar datos.

En el código de Python, crearemos sockets y, con la ayuda de sockets, pasaremos cadenas y estableceremos las conexiones entre el cliente y el servidor.

Sockets en Python

Los sockets se definen como los puntos finales que se construyen para recibir y enviar datos. Hay dos sockets en una sola red; la combinación de una dirección IP y un puerto está presente en los sockets.

Un solo dispositivo tiene n número de sockets según los números de puerto. Hay diferentes tipos de puertos disponibles para diferentes protocolos.

Siguen algunos números de puerto estándar y sus protocolos.

Protocolo Descripción
HTTP Su número de puerto es 80 y sus bibliotecas de Python son httplib, urllib y xmlrpclib. El puerto HTTP se utiliza para páginas web.
FTP Su número de puerto es 20, y sus bibliotecas de Python son ftplib y urllib. Este puerto se utiliza para la transferencia de archivos.
NNTP Su número de puerto es 119 y su biblioteca de Python es nntplib. Este puerto se utiliza para noticias no enviadas.
SMTP Su número de puerto es 25 y su biblioteca de Python es smtplib. Este puerto se utiliza para enviar correos electrónicos.
TELNET Su número de puerto es el 23 y su biblioteca de Python es telnetlib. Este puerto se utiliza para líneas de comando.
Pop3 Su número de puerto es 110 y su biblioteca de Python es poplib. Este puerto se utiliza para obtener correo electrónico.
Gopher Su número de puerto es 70 y su biblioteca de Python es gopherlib. Este puerto se utiliza para la transferencia de documentos.

Métodos integrados para lograr sockets en Python

Debemos importar el módulo o framework Socket para lograr sockets en Python. Todos estos módulos consisten en métodos incorporados, que ayudan a crear sockets y también ayudan a asociarse entre sí.

Los siguientes son algunos métodos incorporados robustos para sockets:

  • El método Socket.socket() crea sockets. Se requiere en ambos lados, como en el lado del cliente y del servidor.
  • Se utiliza Socket.accept() para aceptar las conexiones. El método Socket.accept() devuelve un par de valores como (conn, dirección).
  • Socket.bind() se utiliza para enlazar direcciones especificadas como parámetro.
  • Socket.close() representa que el socket está cerrado.
  • Socket.connect() se utiliza para conectar la dirección especificada como parámetro.
  • Socket.listen() se usa para escuchar comandos en el servidor o cliente.

Cliente y servidor en la programación de socket

A continuación, aprenderá qué significan cliente y servidor en la programación de sockets.

Cliente

La computadora o software que recibe información o datos del servidor se llama cliente. El cliente solicita servicios del servidor; un navegador web es el mejor ejemplo de un cliente.

Servidor

Un servidor es un programa, computadora o dispositivo que se utiliza para administrar los recursos de la red. Un servidor puede ser el mismo dispositivo, computadora local o remota.

Enviar cadena usando comunicación cliente-servidor en Python Socket

Crearemos dos archivos para la comunicación desde sockets en archivos de Python: uno para el lado del servidor y otro para el lado del cliente. Y habrá dos programas para la construcción de conexiones.

Lado del servidor en Python Socket

Primero crearemos el código del lado del servidor. Usaremos métodos incorporados para crear el código del lado del servidor.

El código para el lado del servidor es el siguiente.

import socket

s = socket.socket(
    socket.AF_INET, socket.SOCK_STREAM
)  # Socket will create with TCP and IP protocols
# This method will bind the sockets with server and port no
s.bind(("localhost", 9999))
s.listen(1)  # Will allow a maximum of one connection to the socket
c, addr = s.accept()  # will wait for the client to accept the connection

print("CONNECTION FROM:", str(addr))  # Will display the address of the client

c.send(
    b"HELLO, Are you enjoying programming?/Great! Keep going"
)  # Will send message to the client after encoding

msg = "Take Care.............."
c.send(msg.encode())
c.close()  # Will disconnect from the server

Producción :

This connection is from: ('127.0.0.1', 50802)

Del lado del cliente en Python Socket

El cliente enviará el mensaje al servidor y el servidor responderá a ese mensaje. El lado del cliente también utilizará métodos integrados en el código.

En el lado del cliente, primero crearemos un socket. Luego conectaremos la dirección IP y el número de puerto del host.

Código:

import socket

s = socket.socket(
    socket.AF_INET, socket.SOCK_STREAM
)  # Socket will create with TCP and, IP protocols
s.connect(("localhost", 9999))  # Will connect with the server
# Will receive the reply message string from the server at 1024 B
msg = s.recv(1024)

while msg:
    print("Received:" + msg.decode())
    msg = s.recv(1024)  # Will run as long as the message string is empty

s.close()  # Will disconnect the client

Producción :

The message is Revived: HELLO, Are you enjoying programming?    Great! Keep going

The message is Revived: Take Care..............

Cuando se ejecuta el código dado, se creará una conexión entre el servidor y el cliente. Y después de la conexión, la pantalla del cliente mostrará un mensaje.

El mensaje será:

HELLO, Are you enjoying programming?    Great! Keep going

Y el otro mensaje será:

Take Care..............

Este mensaje se mostrará en el lado del cliente porque fue enviado por el lado del servidor. De esta manera, el código se ejecutará y dará como resultado el envío de cadenas a través de sockets en Python.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Artículo relacionado - Python Socket