2012-02-27 15 views
5

JavaクラスHttpURLConnectionを使用して、(ローカルネットワーク上の)特定のデバイスに接続したいと考えています。プログラムを実行するマシンに2つのネットワークアダプタがインストールされているため、特定のネットワークアダプタを使用する必要があります。 1つのアダプタは、より広い会社ネットワーク上にあり、IPに動的に割り当てられ、2つ目のアダプタは、マシンに対してローカルなネットワークであり、静的IPを有する。私のプログラムを制限したいのは、この2番目のローカルネットワークです。HttpURLConnection&特定のネットワークアダプタを使用する

HttpURLConnectionを使用すると、サーバレスポンスなどを解析して、thisの代わりに必要なデータを取得する必要がなくなるので便利です。しかし、HTTPリクエストを特定のネットワークアダプタに限定する必要があるため、HTTPリクエストが目的のアダプタ経由でのみ送信されることを100%保証することはできません。 HttpURLConnectionがどのように動作するか、つまりオペレーティングシステムに依存して適切なネットワークアダプタを選択する方法を理解していますか?

+2

http://stackoverflow.com/questions/1008781/is-it-possible-to-specify-which-network-interface-for-a-jvm-or-ide-to-use –

答えて

7

プレーンJavaでは、Socketを選択したNetworkInterfaceにのみバインドすることができます。

接続するネットワークインターフェイスを制御できるHTTPプロトコルサポートが必要な場合は、Apache HTTP Clientを使用する必要があります。

ConnRoutePNames.LOCAL_ADDRESSパラメータを指定する必要があります。詳しくはhttp://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.htmlをご覧ください。

UPDATE:4.3 ConnRoutePNamesは廃止されているので

、代わりにRequestConfigとそのRequestConfig.Builderを使用してください。

+0

非常に参考になりました、ありがとうクウェー! – Kerry

+0

ありがとう!もうQweではない:) –

関連する問題