foxprotech 2015-07-08 03:42 采纳率: 0%
浏览 1983

远端服务器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
  • 写回答

3条回答 默认 最新

  • oyljerry 2015-07-08 04:17
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题