12

以下のコードを使用して、サーバー ( http://phpgear-shifz.rhcloud.com/v1/test.php )に保存されているという名前のphpファイルがあります。test.phpOpenshift

<?php
echo "Hello";

仕事

Android アプリケーションからテキストをダウンロードしようとしています。

問題

ネットワークjava.net.UnknownHostException: Unable to resolve host "phpgear-shifz.rhcloud.com": No address associated with hostname経由で接続するのに時間がかかっていますが、すべて問題ありません。WiFiMobile Data

Android アクティビティ コード

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        final TextView tvTest  = (TextView) findViewById(R.id.tvTest);

        new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... params) {

                try {
                    final URL url = new URL("http://phpgear-shifz.rhcloud.com/v1/test.php");
                    final BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
                    final StringBuilder sb = new StringBuilder();
                    String line;
                    while((line = br.readLine())!=null){
                        sb.append(line).append("\n");
                    }

                    br.close();
                    return sb.toString();

                } catch (IOException e) {
                    e.printStackTrace();
                    return "Error: "  + e.getMessage();
                }
            }

            @Override
            protected void onPostExecute(String result) {
                tvTest.setText(result);
            }
        }.execute();

    }

反応

WiFiで

onWiFi

モバイルデータについて

onMobileData

質問

1)完全に問題ないWiFi network場所で接続できないのはなぜですか?Mobile Data

2) この問題を解決するには?

注:接続される場合もあれば、接続されない場合もあります。

4

2 に答える 2

4

IPv4 対 IPv6 の問題がある可能性があります。多くのモバイル データ プランでは IPv6 が使用されていますが、ほとんどの WiFi インストールでは現在 IPv4 が使用されているため、ネットワーク レイヤー以上のものを切り替えている可能性があります。実際にレイヤ 3 プロトコルを切り替えている可能性があります。

phpgear-shifz.rhcloud.com の DNS エントリは IPv4 アドレス (のみ) を指しているため、WiFi で動作するはずです。しかし、モバイル デバイスが IPv6 DNS サーバーを使用していて、IPv4 経由で名前を解決できないのではないでしょうか?

別の可能性として、モバイル デバイスの IPv4 スタックでより一般的な問題が発生している可能性があります。モバイル データが 6-to-4 移行テクノロジの 1 つを使用しているため、ローカルの IPv4 問題を回避できます。

DNS 名 phpgear-shifz.rhcloud.com に別の問題があることに気付きましたが、関連しているとは思えません。

その DNS エントリは、実際には別の CNAME エントリを指す CNAME エントリであり、この CNAME エントリは Amazon の A レコードを指します。CNAME の二重の間接化は、DNS RFC に違反していますが、ほとんどのリゾルバーはとにかくそれを処理する必要があります。また、これが問題である場合、WiFi とモバイル データの両方に等しく影響するはずです。

于 2015-10-06T04:54:00.273 に答える