from SimpleXMLRPCServer import SimpleXMLRPCServer from SimpleXMLRPCServer import SimpleXMLRPCRequestHandler # Restrict to a particular path. class RequestHandler(SimpleXMLRPCRequestHandler): rpc_paths = ('/RPC2',) # Create server server = SimpleXMLRPCServer(("localhost", 8000), requestHandler=RequestHandler) server.register_introspection_functions() # Register pow() function; this will use the value of # pow.__name__ as the name, which is just 'pow'. server.register_function(pow) # Run the server's main loop server.serve_forever() #### #!/usr/bin/perl use strict; use warnings; use Frontier::Client; my $server_url = 'http://localhost:8000/RPC2'; my $server = Frontier::Client->new(url => $server_url); # Call the remote server and get our result. my $result = $server->call('pow', 2, 3); print "Pow: $result\n"; __END__ perl client.pl Pow: 8 #### import xmlrpclib s = xmlrpclib.ServerProxy('http://localhost:8000') print "Pow: {}".format(s.pow(2, 3)) #### #!/usr/bin/perl use strict; use warnings; use Frontier::Daemon; sub pow { my ($x, $y) = @_; return $x ** $y; } # Call me as http://localhost:8000/RPC2 my $methods = { 'pow' => \&pow, }; Frontier::Daemon->new( LocalPort => 8000, methods => $methods) or die "Couldn't start HTTP server: $!";