2017-02-24 2 views
0

ハッピーフッド、皆!Android:DNSネットワークの接続が変更されたときにJavaのSRVルックアップが失敗する

私のAndroidアプリは、DNS Java(http://www.dnsjava.org/doc/)を使用してSRVルックアップを実行します。ネットワーク接続が変更された場合(LTEからWiFiへの切り替え、またはその逆の切り替え)、新しいネットワークでインターネット接続が再確立されたかどうかにかかわらず、各ルックアップは永久にタイムアウトします。ときどきこれは古いネットワークに切り替えることで解決されますが、変更が多すぎると回復しません。ここでは、以下に使用しているコードを示します。

他の詳細をお知らせいただければお知らせください。助けが大いにありがとう!

答えて

1

ネットワーク切り替え後にSRVルックアップに失敗する可能性がある人は、問題を見つけたようです。問題は、LookupオブジェクトのResolverプロパティがネットワーク構成をキャッシュしているように見えることでした。ルックアップが常に最新のネットワーク構成になっているようにするには、新しいResolverを再初期化するだけです。以下の変更で、私は最初のテストケースを再現することができませんでした。

Record[] records = null;// = new Record[0]; 
     try { 
      Lookup configLookup = new Lookup(query_url, Type.SRV); 
      configLookup.setResolver(new ExtendedResolver()); /** FIX **/ 
      records = configLookup.run(); 
     } catch (TextParseException e) { 
      e.printStackTrace(); 
      return null; 
     } catch (UnknownHostException e) { 
      e.printStackTrace(); 
     } 
+0

ありがとうございます! ResolverConfig.refresh();と私のために動作します。 My codeどこで接続が変更されました:org.xbill.DNS.ResolverConfig.refresh(); lookup.setResolver(new ExtendedResolver()); –

関連する問題