开发者

Python: Is it possible to set the clientport with xmlrpclib?

开发者 https://www.devze.com 2023-04-01 22:39 出处:网络
Is it possible to set the clientport for the xmlrpc-connection? I want to say: Client should make a ServerProxy-object toover a specific client开发者_JS百科 port

Is it possible to set the clientport for the xmlrpc-connection?

I want to say:

Client should make a ServerProxy-object to over a specific client开发者_JS百科 port

or pseudocode something like this:

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


Try to define a custom transport. This should be something like that:

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)

EDIT: bug fix httplib.HTTP => httplib.HTTPConnection

And checked that it works, in python 2.7 (but not before)


There is no option for this in module xmlrpclib, but you can create your own by modifying the original version. Assuming you use Linux, fetch /usr/lib/python2.7/xmlrpclib.py. Modify the method make_connection accordingly.

Providing a parameter source_address to HTTPConnection is supported by httplib not before Python version 2.7.

Have fun!

0

精彩评论

暂无评论...
验证码 换一张
取 消