EclipseのAndroid Emulatorからhttp:// localhost Webサーバーに接続する方法


485

EclipseのAndroidエミュレータでlocalhost Webサーバーページに接続するにはどうすればhttp://localhostよいhttp://127.0.0.1ですか?

私は試してみましたが、エミュレータは依然としてlocalhostのGoogle検索のように私の要求を受け入れます。さらに悪いことに、Webサーバーが正常に実行されているときにページが見つからなかったと言っています。


この質問はAndroid エミュレーターに関するもので、その場合にのみ適用できる解決策があります。物理的なAndroidデバイスを使用しているときにこの問題に直面した場合は、代わりにstackoverflow.com/questions/4779963/…
Chris Stratton

回答:


819

localhostは、コードが実行されているデバイス、この場合はエミュレータを指します。

Androidシミュレーターを実行しているコンピューターを参照する場合は、代わりにIPアドレス10.0.2.2を使用してください

ここに画像の説明を入力してください

詳しくはこちらから。


12
なぜ他の質問に言及するのですか?Link Androidエミュレーターネットワークを
Marvin Emil Brach

リンクを指摘していただきありがとうございます。答えが投稿されたとき、そこにはなかったと思います。
Primal Pappachan 2012

1
@primpap:IPアドレスの代わりにマシン名を使用できますか?
KJEjava48 2015年

@primpapこれはモバイルデバッグでは機能しません。他に何かありますか?または、10.0.2.2はエミュレータで動作していますが、USBデバッグのためにモバイルを接続すると動作しないため、どこかで間違いを犯しています。?
Jawad Zeb 2015年

5
このソリューションは、ここでの特定の質問で尋ねられるように、エミュレーターのみ機能します。物理的なAndroidデバイスでのデバッグでは、サーバーの実際のIPアドレスまたは名前を使用する必要があります。この特別なエミュレータ専用のエイリアスは使用できません。 この回答は良いですが、読者は自分の状況が当てはまる状況であることに注意する必要があります。
クリスストラットン2017

156

使用10.0.2.2デフォルトのAVDのためにと10.0.3.2のために


それでは10.0.3.2、ホストファイルに追加するだけですか?
ayjay

29

自宅のマシンで10.0.2.2を使用しましたが、職場では機能しませんでした。何時間もいじり回した後、Android仮想デバイス(AVD)マネージャーを使用して新しいエミュレーターインスタンスを作成し、最終的に10.0.2.2が機能しました。

他のエミュレータインスタンス(プラットフォームは同じ)の何が問題だったかはわかりませんが、10.0.2.2が機能しない場合は、新しいエミュレータインスタンスを作成してみてください。


4
残念ながら、新しいAVDインスタンスを作成しても機能しません。何を指示してるんですか?すべてを再インストールするには?
VladoPandžić13年

23

ポート番号はhttp://10.0.2.2:8080/どこか試してください8080。それは完全に機能しました。試し10.0.2.2てみてもうまくいきません。ポート番号を追加する必要があります。また、Microsoft IISがインストールされている場合は、(Windows OSを使用している場合は)コントロールパネルからその機能をオフにしてから、上記のように試してください。


2
ページがIISでホストされている場合はどうなりますか?
maracuja-juice 2017

どのポートアウト@Marimbaだけの図は、ご使用のIISサーバーは、アクセスの機能10.0.2.2:your_iis_portを
StoneLam

これは完成した文字列で、私のAndroid 8.1エミュレーターでのみ機能しました
CodeToLife



3

エミュレータ「Nox App Player」のシステムホストIPアドレスを把握する必要がありました。これが私がそれを理解した方法172.17.100.2です。

  1. アプリストアからAndroidターミナルエミュレーターをインストール
  2. ip link showコマンドを発行して、すべてのネットワークインターフェイスを表示します。特に興味深いのはeth1インターフェースでした
  3. ifconfig eth1コマンドを発行し、netを172.17.100.15/255.255.255.0
  4. からアドレスへのpingを開始し172.17.100.1、「172.17.100.2」でヒットしました。ファイアウォールが干渉するかどうかはわかりませんが、私の場合はそうではありませんでした

多分これは他の誰かが他のエミュレータのためにそれを理解するのを助けることができます。


1

Windowsを使用している場合は、simbolシステムに移動してipconfigを記述し、マシンに割り当てられているIPを確認できます。


他の回答で引用されているホストループバックインターフェイスの特別なエイリアスを使用できるため、これはエミュレータからデバッグする場合は必要ありません。ただし、物理的なAndroidデバイスからデバッグする場合は、はい、テストサーバーの実際のアドレスを特定して使用する必要があります。
クリスストラットン2017

1

localhost:8000エミュレータを実行するたびに以下のコマンドを実行することで、実際にを使用してマシンのローカルホストに接続できます(Macでのみテスト済み):

adb reverse tcp:8000 tcp:8000

Android Studioターミナルに置くだけです。

基本的には、リバースプロキシを設定します。リバースプロキシでは、電話で実行されているhttpサーバーがポートでの接続を受け入れ、コンピューターに接続するか、またはその逆を行います。


0

よくわかりませんが、このトピックはすでに解決されているかもしれませんが、最近Windowsマシンでこれを試してみたとき、多くの困難に直面しました。だから私の解決策は本当に簡単でした。このソフトをダウンロードしました http://www.lenzg.net/rinetd/rinetd.htmlして、ポートフォワーディングを作成する方法の指示に従い、Androidデバイスを正常に接続してasp.net localhostプロジェクトを作成し、ブレークポイントで停止しました。

私のrinetd.confファイル:

10.1.1.20 1234 127.0.0.1 1234
10.1.1.20 82 127.0.0.1 82

ここで、10.1.1.20は私のlocalhost ip、82と1234は私のポートです。また、簡単に使用できるようにバスファイルyournameofbathfile.batを作成し、そのファイルをrinedfolder内に置きます。私の入浴ファイル:

rinetd.exe -c rinetd.conf

このソフトを起動した後、aps.netサーバーを起動し、Androidデバイスまたはローカルネットワーク内の任意のデバイス(たとえば、Computer ABCがputtyを起動する)からアクセスしようとすると、すべてが機能することがわかります。ルーターの設定に行ったり、その他の複雑なことをする必要はありません。これがお役に立てば幸いです。楽しい。


-1

別の回避策は、no-ip.orgから無料のドメインを取得し、それをローカルIPアドレスにポイントすることです。次に、使用http://localhost/yourwebserviceする代わりに試すことができますhttp://yourdomain.no-ip.org/yourwebservice

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.