XML-RPC server-client communication

60 views
Skip to first unread message

Stefka

unread,
Jul 5, 2006, 12:25:24 PM7/5/06
to
Hi all,

I try to implement a python xml-rpc server and call it from a php
client. If the server and the client are on the same machine
(localhost) the communication between them is just fine. When I start
the server on a different host I don't get an answer.
What is missing there?? I tried also to set username and password,
cause I thought there is an authenticate issue but it didn't work
either.
Here is my code:

python server:
<code>
import SimpleXMLRPCServer
from re import *
import string

#The server object
class myFunctions:
def myTest(self, code):
mya = findall('#include.+',code)
stringo = string.join(mya,', ')
return stringo

calendar_object = myFunctions()
server = SimpleXMLRPCServer.SimpleXMLRPCServer(("xxx.xxx.xxx.xxx",
22999))
server.register_instance(calendar_object)

#Go into the main listener loop
print "Listening on port 22999"
server.serve_forever()
</code>

php client:
<code>
<?
require_once("XML/RPC.php");

$code = '#include<iostream>
#include<cmath>';

$function = "myTest";

$param = new XML_RPC_Value(htmlspecialchars($code), "string");
$params = array($param);
$message = new XML_RPC_Message($function, $params);
$client = new XML_RPC_Client("/new2.py","xxx.xxx.xxx.xxx",22999);

print_r($client);
$result = $client->send($message);
print_r($result);

$value = $result->value();
$number = $value->scalarval();
echo "<p><b>Return Value:</b> $number </p>";

echo "<p>Headers are: $number </p>";
?>
</code>

Thanx in advance :)

Laszlo Nagy

unread,
Jul 5, 2006, 12:36:03 PM7/5/06
to Stefka, pytho...@python.org
Stefka írta:

> Hi all,
>
> I try to implement a python xml-rpc server and call it from a php
> client. If the server and the client are on the same machine
> (localhost) the communication between them is just fine. When I start
> the server on a different host I don't get an answer.
>
Please go to the machine where you php program resides, and check if the
server is not blocked by firewall rules. For example, do

telnet xxx.xxx.xxx.xxx 22999

If it does not connect, then the problem is with your network or
firewall settings. (I thought this is the most probable...)

Best,

Laszlo

Stefka

unread,
Jul 5, 2006, 2:57:16 PM7/5/06
to
Hi,

thanx for the hint :)! I ran a port scan and it turned out, that the
port was realy closed.
Thanx again!

greetz,
Stefka

Marco Aschwanden

unread,
Jul 6, 2006, 3:55:30 AM7/6/06
to pytho...@python.org
> server = SimpleXMLRPCServer.SimpleXMLRPCServer(("xxx.xxx.xxx.xxx",
> 22999))

Could it be that xxx.xxx.xxx.xxx stands for '127.0.0.1'? If so... rename
it to 'localhost'. If you bind a port to 127.0.0.1 it will be found only
on the same machine.
Greetings,
Marco

Stefka

unread,
Jul 6, 2006, 1:33:51 PM7/6/06
to
no, its an extern IP adress. For my needs the server and the client
must be on different machines. But I opened the port and it worked.
Thanks anyway :)

Greetz,
Stefka

Reply all
Reply to author
Forward
0 new messages