2011-09-16 3 views
6

私自身のアンドロイドhttpサーバを作成しようとしています。それはかなりOKですが、私は私のAVDに問題があります。変更をテストするたびにアプリをダウンロードする必要はありません。私はAVDを介して私のアプリケーションに接続したいと思います。 私はこの機能を使用していたIPアドレスを取得するには、次のすべてが良い動作しますが、私はAVDに私のアプリを実行すると、それはIPを示して自分の携帯電話にAVDに接続するには

private String getLocalIpAddress() { 


     try { 
      for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { 
       NetworkInterface intf = en.nextElement(); 
       for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { 
        InetAddress inetAddress = enumIpAddr.nextElement(); 
        if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); } 
       } 
      } 
     } catch (SocketException ex) { 
      Log.e("ServerActivity", ex.toString()); 
     } 
     return null; 
    } 

を:10.0.2.15 と私は接続できませんよそれに。 AVDで動作するアプリケーションに接続する方法はありますか? 私のアプリがポート8080を使用している場合は、

+0

は、ファイアウォールの問題のように思えます。 – doNotCheckMyBlog

答えて

0

私はあなたの問題への答えを直接知ることはできませんが、私はあなたのコンピュータにAVDから接続するとき、10.0.2.2を使用する必要がありますAVDは本質的に別の「ルータ」の後ろにあります。あなたのルータからローカルLAN IPを取得しません。詳細についてはthis質問をご覧ください。 thisリンクからは、彼が引用:

をエミュレータの各インスタンスは、開発マシンのネットワーク インターフェースおよび設定から、インターネットからそれを分離する仮想ルータ/ファイアウォール サービスの後ろに実行されます。エミュレートされたデバイスは、 ネットワークの に開発マシンやその他のエミュレータインスタンスが表示されない場合があります。代わりに、ルータ/ファイアウォールにイーサネット を介して接続されていることがわかります。

6

デバイスへのTelnet(仮定、ポート5554上で):8080:8080:

がTCPを追加REDIR:アンドロイドコンソールプロンプト

のtelnet localhostの5554

リダイレクトを使用

あなたのブラウザを 'http://127.0.0.1:8080/'にすると、今すぐAVDに送信してください。

提供: http://www.rhill.co.uk/?p=35

+0

'redir'コマンドが必要な箇所は不明ですが、最新の画像には表示されません。 –