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.
me das una mano ? agerga mi correo
juanjordosgoitia@hotmail.com
ese no es mi correo