2009-09-02 3 views
0

現在、私のアプリケーションではcURLの下のWindows上でc-ares非同期DNSリゾルバライブラリを使用していますが、他のWindowsアプリケーションとは動作が異なると不平を言うユーザーがいます。ある特定のユーザーは、「他のアプリケーションはMicrosoft DNSクライアントを使用している」と言い、問題は発生しません。「Microsoft DNSクライアント」とgetaddrinfoはどちらですか?

cURL自体にスレッドでgetaddrinfo()を使用する非同期DNS実装があります。私の推測は、 "DNSクライアント"とそのホスト(例えばDnsQuery?)を使用するのと同等の動作になると思います。

getaddrinfo()の動作には具体的な違いがありますかWin32 APIの実際のDns * APIを使用します。

答えて

1

ソースを見ると、ホスト名を照会するためのdnsプロトコルを実際に実装しているようです(getaddrinfoを直接呼び出すことはありません) - WINSの検索のようなものは見逃してしまいます。スタッフウィンドウの名前を検索することができます。

+0

理解しています。だから私の質問は、getaddrinfoそれを行うのに十分サポートされている方法を使用している?または、ほとんどのWindowsアプリでWin32 API DNS APIを使用していますか? –

+0

Windowsの場合は、joeの平均的なアプリケーションにaresを使用しないでください。 – Lothar

0

WindowsでDNSクエリを実行する最も簡単な方法は、DNSQuery(および派生関数utf8、wbytes、ansi)を使用することです。非同期の解決が必要な場合を除き、この場合はC-Aresまたは他の同様のAPIを使用することをお勧めします。

私は、WINSやその他のWindows固有の解決策(DNS仕様の一部ではない)がc-aresでカバーされていないかどうかはわかりません。あなたに私たちにいくつかの例を与えることができれば助けになるでしょう、おそらく私たちもそれらをc-aresで実装することができます。