SimpleXMLRPCServer: Невозможно установить соединение, поскольку целевая машина активно от него отказалась - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь создать сервер xmlrpc в ВМ, если указать хост как localhost , а затем при попытке подключиться через клиент возникает следующая ошибка.

E:\Programming\Python\xmlserver>python xml_client.py
Traceback (most recent call last):
  File "xml_client.py", line 6, in <module>
    print s.system.listMethods()
  File "C:\Python27\lib\xmlrpclib.py", line 1240, in __call__
    return self.__send(self.__name, args)
  File "C:\Python27\lib\xmlrpclib.py", line 1599, in __request
    verbose=self.__verbose
  File "C:\Python27\lib\xmlrpclib.py", line 1280, in request
    return self.single_request(host, handler, request_body, verbose)
  File "C:\Python27\lib\xmlrpclib.py", line 1308, in single_request
    self.send_content(h, request_body)
  File "C:\Python27\lib\xmlrpclib.py", line 1456, in send_content
    connection.endheaders(request_body)
  File "C:\Python27\lib\httplib.py", line 1049, in endheaders
    self._send_output(message_body)
  File "C:\Python27\lib\httplib.py", line 893, in _send_output
    self.send(msg)
  File "C:\Python27\lib\httplib.py", line 855, in send
    self.connect()
  File "C:\Python27\lib\httplib.py", line 832, in connect
    self.timeout, self.source_address)
  File "C:\Python27\lib\socket.py", line 575, in create_connection
    raise err
socket.error: [Errno 10061] No connection could be made because the target machine actively refused it

Но когда я устанавливаю VM IP вместо localhost, он прекрасно работает. Мне нужно запустить xmlserver на нескольких машинах. Так что для каждой машины я должен давать IP машины вместо того, чтобы просто указывать localhost в файле сервера? и подключитесь к этому серверу, используя IP-адрес компьютера.

Ниже приведен пример файла моего сервера,

from SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandler

def ping():
    return True

server = SimpleXMLRPCServer(('localhost', 9000))
server.register_function(ping)

if __name__ == '__main__':
    server.serve_forever()
...