2017-08-03 17 views
0

HTTP要求を行うために次のAPIを使用しています。名前解決のためにparellelにプライマリおよびセカンダリDNSサーバーを使用する

QNetworkRequest Request (QUrl (QString (HTTP_PRF PING_URL))); 
m_pNetworkReply = m_pNetAccesMgr->get (Request); 

resolv.confには次のエントリがあります。

nameserver 8.8.8.8 
nameserver 10.10.182.225 

それはQNetworkAccessManager'sのget APIは、指定したドメイン名を解決するために順次ネームサーバを使用しているようです、すなわちそれは最初8.8.8.8を試行し、それが失敗した場合、それは10.10.182.255をしようとします。この名前解決を並行して行うためのQtを作る方法がいくつかあります。

+2

私はあなたができるとは思わない。あなたは最初のものが失敗した場合にのみ2番目のものを使用することになっているので、パラレルリクエストを得るためのオプションがあるとは思わない。しかし、あなたは 'QDnsLookup'を使って自分で解決し、手動で2つのルックアップを行うことができます。なぜあなたはそれらを並行してやりたいのですか? –

+0

@ベンジャミン:いくつかの制限があるため、私は 'resolv.conf'の最初のエントリとして' 8.8.8.8 'を使用しなければなりません。しかし、キャプティブポータルを持つルータの中には、サインインするまで '8.8.8.8 'をブロックしているものがあります。このようなルータでは、私のDNSルックアップはファーストネームルックアップのために5秒以上かかる。 –

答えて

3

私はネットワークの専門家ではありませんが、単一のプログラムを調整するだけではなく、システム全体をよりよく解決できる問題があります。

Adjusting how long Linux takes to fail over to backup DNS server listed in resolv.confによると、あなたはresolv.confに次の行を追加することができます。

options timeout:1 attempts:1 

これは最初の試みに失敗した後に、DNSサーバを切り替えて、1秒にタイムアウトを設定します。

関連する問題