Cliente / Servidor
Joaquin Jose del Cerro Murciano
jjdelcerromurciano en yahoo.es
Mar Abr 26 09:53:49 CEST 2005
El Domingo, 24 de Abril de 2005 11:30, JoePC escribió:
> Estoy haciendo un programa que tiene una parte cliente/servidor, el
> servidor pensaba hacerlo mediente un thread y una clase TCPServer como
> la siguiente:
>
> import SocketServer
>
> IP='127.0.0.1'
> PORT=12384
>
> class H:
> def __init__(self, req, cl_ad, s):
> pass
> def handle(self):
> print 'H'
> return 0
>
> T = SocketServer.TCPServer((IP, PORT), H)
> T.serve_forever()
>
>
> De momento estoy en pruebas, pero no se como hacer el cliente para que
> me salte la funcion handle.
> Alguien me puede ayudar?
>
> Gracias.
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
Es posible que usar XMLRPC sea una solucion simple a tu problema.
Aqui tienes un pequeñito ejemplo (tomado casi todo del manual de python).
--------------- server.py ------------------------------
from SimpleXMLRPCServer import SimpleXMLRPCServer
def add(x,y):
return x+y
server = SimpleXMLRPCServer(("localhost", 8000))
server.register_function(add)
server.serve_forever()
----------- cliente.py -----------------------------------
from xmlrpclib import ServerProxy
server = ServerProxy("http://localhost:8000")
print server.add(1,3)
-----------------------------------------------------------
Aqui el uso.
Por un lado arrancas el server.
jupiter:jjdelcerro# python server.py
localhost.desarrollo.cenoclap.net - - [26/Apr/2005 09:42:07] "POST /RPC2
HTTP/1.0" 200 -
localhost.desarrollo.cenoclap.net - - [26/Apr/2005 09:42:43] "POST /RPC2
HTTP/1.0" 200 -
Y por otro el cliente.
jupiter:jjdelcerro# python cliente.py
4
jupiter:jjdelcerro#
Cuando arrancas el server se queda esperando peticiones. Por defecto, por cada
peticion que recibe muestra una linea a modo de log. Segun el tipo de
aplicacion que hagas es posible que te interese lanzar el server en un
thread. En el ejemplo, el servidor publica una unica funcion "add" a traves
del metodo register_function.
Po otra lado simplemente creas un ServerProxy e invocas a las funciones que
publicaste en el server.
Simple. A primera vista, demasiado simple.
Puedes encontrar mas informacion en la documentacion de los modulos
SimpleXMLRPCServer
xmlrpclib
Que bienen en la libreria standard de python.
Un saludo
Joaquin
Más información sobre la lista de distribución Python-es