Programa Cliente-Servidor en Python

Navegando por la web me encuentro con este enlace, el cual contiene la informacion que estaba buscando  y quiero compartirla hoy con ustedes. Se trata de un programa  Cliente-Servidor desarrollado en Python. Para aquellas personas que no saben que es un programa cliente-servidor:

Esta arquitectura consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema operativo multiusuario distribuido a través de una red de computadoras.

La separación entre cliente y servidor es una separación de tipo lógico, donde el servidor no se ejecuta necesariamente sobre una sola máquina ni es necesariamente un sólo programa. Los tipos específicos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propósitos varían de unos servicios a otros, la arquitectura básica seguirá siendo la misma.

Esta arquitectura la usamos todos los dias, por ejemplo, cuando navegamos  accedemos al servidor web desde nuestro cliente el cual es el navegador, independientemente de cual sea.

Ahora, desarrollar un programa de este tipo en Python es demasiado sencillo,  en esta ocasion mostrare el codigo del cliente.py   y servidor.py y cualquier persona con conocimientos basicos en programacion no tendra problemas en entenderlo y modificarlo a su gusto:

servidor.py

#+----------------------------------+
#| Server  TCP/IP                    |
#+----------------------------------+
 import socket
#Creo el  objeto socket
 s = socket.socket()

#Invoco  al metodo bind, pasando como parametro
#una tupla con IP y puerto
 s.bind(("localhost",  9999))

#Invoco  el metodo listen para escuchar conexiones
#con el numero maximo de  conexiones como parametro
 s.listen(1)

#El  metodo accept bloquea la ejecucion a la espera de conexiones
#accept  devuelve un objeto socket y una tupla Ip y puerto
 sc, addr = s.accept()
 print "Recibo conexion de " + str(addr[0]) + ":" + str(addr[1])

while  True:

#invoco  recv sobre el socket cliente, para recibir
#un maximo (segun parametro)  de 1024 bytes
 recibido = sc.recv(1024)
 if  recibido == "by":
 break
 print  "Recibido:", recibido

#Envio  la respuesta al socket cliente
 sc.send(recibido)

print  "adios"

#cierro  sockets cliente y servidor
 sc.close()
 s.close()

Cliente.py

#+----------------------------------+ #| Client TCP/IP                    | #+----------------------------------+ import socket s = socket.socket() #invoco el metodo connect del socket pasando como parametro la tupla IP , puerto s.connect(("localhost", 9999)) while True: mensaje = raw_input("Mensaje a enviar: ") #invoco el metodo send pasando como parametro el string ingresado por el usuario s.send(mensaje) if mensaje == "by": break print "adios" #cierro socket s.close()

Como pueden ver es algo muy sencillo de realizar y comprender, solo falta cambiar la direccion IP en el cliente, por la IP donde estara el programa servidor a la escucha.  Todo lo que se desee que realice el programa servidor cuando reciba el mensaje by tendra que ir dentro del if.

Espero que lo hayan entendido, a mi me servio mucho este ejemplo, y por eso quiero agradecer publicamente al autor de esta entrada por compartir  buenos conocimientos. Recuerden la identacion ya que es fundamental en Python.

Comparte!
3 comentarios