Python: можно ли установить клиентский порт с помощью xmlrpclib? - PullRequest
0 голосов
/ 01 сентября 2011

Можно ли установить клиентский порт для xmlrpc-соединения?

Я хочу сказать:

Клиент должен настроить объект ServerProxy на определенный клиентский порт

или псевдокод что-то вроде этого:

serv = xmlrpclib.ServerProxy("server:port","overSpecificClientPort").

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

Попробуйте определить пользовательский транспорт. Это должно быть что-то вроде этого:

import xmlrpclib, httplib

class sourcedTransport(xmlrpclib.Transport):
    def setSource(self, src):
        self.src = src
    def make_connection(self, host):
        h = httplib.HTTPConnection(host, source_address= self.src)
        return h

srcPort = 43040
srcAddress = ('', srcPort)
p = sourcedTransport()
p.setSource(srcAddress)
server = xmlrpclib.ServerProxy("server:port", transport=p)

РЕДАКТИРОВАТЬ: исправление ошибки httplib.HTTP => httplib.HTTPConnection

И проверил, что это работает, в python 2.7 (но не раньше)

0 голосов
/ 01 сентября 2011

В модуле xmlrpclib для этого нет опции, но вы можете создать свой собственный, изменив исходную версию.Предполагая, что вы используете Linux, получите /usr/lib/python2.7/xmlrpclib.py.Измените метод make_connection соответственно.

Предоставление параметра source_address до HTTPConnection поддерживается httplib не ранее Python версии 2.7.

Веселитесь!

...