远端服务器xmlrpclib访问报错

在一台VPS上设立服务端:

 import argparse
import xmlrpclib
import threading

from SimpleXMLRPCServer import SimpleXMLRPCServer

# some trivial functions
def add(x,y):
    return x+y

def subtract(x, y):
    return x-y

def multiply(x, y):
    return x*y

def divide(x, y):
    return x/y


class ServerThread(threading.Thread):
    def __init__(self, server_addr):
        threading.Thread.__init__(self)
        self.server = SimpleXMLRPCServer(server_addr)
        self.server.register_multicall_functions()
        self.server.register_function(add, 'add')
        self.server.register_function(subtract, 'subtract')
        self.server.register_function(multiply, 'multiply')
        self.server.register_function(divide, 'divide')

    def run(self):
        self.server.serve_forever()

def run_server(host, port):
    # server code
    server_addr = (host, port)
    server = ServerThread(server_addr)
    server.start() # The server is now running
    print "Server thread started. Testing the server..."


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Multithreaded multicall XMLRPC Server/Proxy')
    parser.add_argument('--host', action="store", dest="host", default='localhost')
    parser.add_argument('--port', action="store", dest="port", default=8000, type=int)
    # parse arguments
    given_args = parser.parse_args()
    host, port =  given_args.host, given_args.port
    run_server(host, port)

并且打开iptables 上对应的TCP 8000端口:
         iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
         iptables -A OUTPUT -p tcp --sport 8000 -j ACCEPT

客户端代码如下:
    host='198.98.XXX.XXX'
        port=8000
    proxy = xmlrpclib.ServerProxy("http://%s:%s/" %(host, port))
    multicall = xmlrpclib.MultiCall(proxy)
    multicall.add(7,3)
    multicall.subtract(7,3)
    multicall.multiply(7,3)
    multicall.divide(7,3)
    result = multicall()
    print "7+3=%d, 7-3=%d, 7*3=%d, 7/3=%d" % tuple(result)

报错代码如下:
    Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "/usr/lib/python2.7/xmlrpclib.py", line 998, in __call__
            return MultiCallIterator(self.__server.system.multicall(marshalled_list))
        File "/usr/lib/python2.7/xmlrpclib.py", line 1233, in __call__
            return self.__send(self.__name, args)
        File "/usr/lib/python2.7/xmlrpclib.py", line 1587, in __request
            verbose=self.__verbose
        File "/usr/lib/python2.7/xmlrpclib.py", line 1273, in request
            return self.single_request(host, handler, request_body, verbose)
        File "/usr/lib/python2.7/xmlrpclib.py", line 1301, in single_request
            self.send_content(h, request_body)
        File "/usr/lib/python2.7/xmlrpclib.py", line 1448, in send_content
            connection.endheaders(request_body)
        File "/usr/lib/python2.7/httplib.py", line 997, in endheaders
            self._send_output(message_body)
        File "/usr/lib/python2.7/httplib.py", line 850, in _send_output
            self.send(msg)
        File "/usr/lib/python2.7/httplib.py", line 812, in send
            self.connect()
        File "/usr/lib/python2.7/httplib.py", line 793, in connect
            self.timeout, self.source_address)
        File "/usr/lib/python2.7/socket.py", line 571, in create_connection
            raise err
    socket.error: [Errno 111] Connection refused

Connection refused
你的网络请求被阻止了,防火墙等,或者你的网络不能连接VPS

检查下服务器的地址、防火墙的设置、端口号、协议。

我是能链接远端服务器的,并且在服务器上iptables设置了22端口,80端口,以及我需要使用的端口数据收发都打开,但就是报错;本机代码运行一切正常。我使用的是远程VPS,即在另一实际机器中运行的虚拟机,所以不能调试实际母鸡的防火墙,有什么办法可以测试吗?