6

次のコードがあります。

f = urllib2.urlopen(url)
data = f.read()
f.close()

2 つのネットワーク インターフェイスを備えたマシンで実行されています。コードで使用するインターフェイスを指定したいと思います。具体的には、デフォルトで使用しているものとは別のものを使用したいのですが、インターフェイスを選択するだけでどれがどれであるかがわかります。

これを行うための最も簡単/最良/最もpythonicな方法は何ですか?

4

2 に答える 2

3

まだ完全な解決策ではありませんが、単純なソケット オブジェクトのみを使用している場合は、次の方法で必要なことを行うことができます。

import socket
s = socket.socket()
s.bind(("127.0.0.1", 0))    # replace "127.0.0.1" by the local IP of the interface to use
s.connect(("remote_server.com", 80))

したがって、システムがソケットを目的のネットワーク インターフェイスにバインドするように強制します。

于 2011-11-23T17:06:45.473 に答える
2

Twisted を使用する場合は、次の方法twisted.web.client.Agentでこれを実現できます。

from twisted.internet import reactor
from twisted.web.client import Agent

agent = Agent(reactor, bindAddress=("10.0.0.1", 0))

そしてagent、通常の方法で使用します。

于 2011-11-23T17:59:33.753 に答える