0

nanohttpd デモ アプリケーションを変更せずに使用して、Android で簡単な Web サーバーをセットアップしようとしました。私が使用している Android デバイスは、Android 4.0.3 を実行しています。

他のデバイスから Web サーバーにアクセスできますが、Web サーバーが実行されている同じ Android デバイス上のブラウザー (Firefox、Chrome、およびネイティブ Android ブラウザー) から Web サーバーに接続できません。

さまざまなアドレスとポートの組み合わせを試しましたが成功しませんでした (localhost、127.0.0.1、10.0.0.2、実際に割り当てられた IP アドレス、ポート 8080、8082)。また、nanohttpd アプリケーションを 127.0.0.1 に直接バインドしようとしましたが、どちらも成功しませんでした。Android デバイスのターミナル アプリケーションを使用してアドレスに「ping」できることを確認したので、ネットワーク接続は問題ないようです。

ブラウザがローカル Web サーバー インスタンスに接続できないようにする Android の制限はありますか? もしそうなら、これを機能させるために変更する必要がある構成設定またはアクセス許可はありますか?

4

3 に答える 3

1

1) AndroidManifest.xml でインターネット アクセス許可を付与する必要があります。

<uses-permission android:name="android.permission.INTERNET" />

2) また、ルートなしではポート 80 を使用できません。

詳細については、この質問を参照してください。

3) デバイスの VPN またはプロキシ アプリまたはデータ圧縮を無効にします。

于 2014-10-06T14:02:21.977 に答える
1

たくさんの試行錯誤を経て、何が起こっているのかを把握できたと思います。Web サーバー アプリケーションからブラウザーに切り替えて要求を試行すると、Web サーバー アプリケーションが中断され、接続が受け入れられなくなります。アプリケーションがバックグラウンドで実行されていると想定していましたが、どうやらそうではないようです。

Web サーバーをバックグラウンド サービスとして実行する方法を探り、それがどこに行くのかを見ていきます。

Android サービス内に nanohttpd Web サーバーを埋め込んだ後、すべてが当初の意図どおりに機能しています。

于 2014-10-07T01:11:59.033 に答える