web-dev-qa-db-ja.com

Android clientでコンピューターのIPアドレスを使用する代わりに10.0.2.2を使用してローカルWebサーバーに接続する理由

通常、URLで10.0.2.2 :(ポート番号)を使用してローカルWebサーバーに接続しますが、10.0.2.2ではなくコンピューターのIPアドレスを使用する必要があります

それでは、なぜ10.0.2.2を使用するのですか?

41
Touchstone

ネットワークアドレススペース

エミュレーターの各インスタンスは、開発マシンのネットワークインターフェースと設定、およびインターネットから隔離する仮想ルーター/ファイアウォールサービスの背後で実行されます。エミュレートされたデバイスは、ネットワーク上の開発マシンまたは他のエミュレーターインスタンスを見ることができません。代わりに、イーサネット経由でルーター/ファイアウォールに接続されていることのみを認識します。

各インスタンスの仮想ルーターは、10.0.2/24ネットワークアドレス空間を管理します。ルーターによって管理されるすべてのアドレスは、10.0.2.<xx>、ここで<xx>は数値です。このスペース内のアドレスは、エミュレーター/ルーターによって次のように事前に割り当てられます。

ネットワークアドレスの説明

10.0.2.1    Router/gateway address
10.0.2.2    Special alias to your Host loopback interface (i.e., 127.0.0.1 on your development machine)
10.0.2.3    First DNS server
10.0.2.4 / 10.0.2.5 / 10.0.2.6  Optional second, third and fourth DNS server (if any)
10.0.2.15   The emulated device's own network/ethernet interface
127.0.0.1   The emulated device's own loopback interface
38
Zephyr

コンピューターでサーバーとエミュレーターの両方を実行している場合、127.0.0.1 :(ポート)はサーバーではなくエミュレーター自体を参照します。10.0.2.2はその問題の解決策です:)

お役に立てば幸いです

25
vlad_o

10.0.2.2を使用する理由は、ホストループバックインターフェイス(別名127.0.0.1)への特別なエイリアスだからです。それが動作する理由であり、動作するのはクールではありませんか?

19

接続に10.0.2.2を使用する場合、常にローカルホストを指します。これを読む前に、マシンに実際のIPを使用しましたが、両方の方法で機能します。

10.0.2.2を使用する利点は、実際のIPを気にせず、別のコンピューターでプロジェクトを簡単に移動できることです。

9
azertiti