xmlrpc-connection の clientport を設定することは可能ですか?
私は言いたい:
クライアントは、特定のクライアント ポートを介して ServerProxy オブジェクトを作成する必要があります
または、次のような疑似コードを作成します。
serv = xmlrpclib.ServerProxy("server:port","overSpecificClientPort").
カスタムトランスポートを定義してみてください。これは次のようになります。
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で動作することを確認しました(以前は動作しませんでした)
モジュールxmlrpclibにはこれに対するオプションはありませんが、元のバージョンを変更することで独自のオプションを作成できます。Linuxを使用していると仮定して、フェッチし/usr/lib/python2.7/xmlrpclib.py
ます。make_connection
それに応じてメソッドを変更します。
にパラメータsource_address
を提供することは、 HTTPConnection
Pythonバージョン2.7より前ではなくhttplibによってサポートされています。
楽しむ!