Linux 関数 inet_ntoa は Linux で dns クエリになりますか? 誰でもこれについて例を挙げることができますか? DNS ルックアップを制限したいのですが、その場合、inet_ntoa を使用すると DNS クエリが発生しますか?
質問する
137 次
3 に答える
2
いいえ、指定された「バイナリ コード化された」IPv4 アドレスを文字列に変換するだけです。
ところで、IPv4 とともに、この機能もますます「古いスタイル」になります。それに加えて、アドレスが返されるバッファーは呼び出しごとに再利用されるため、スレッドセーフではありません。
プログラムでを使用getnameinfo()
し、フラグNI_NUMERICHOST
とを指定するとNI_NUMERICSERV
、関数は DNS クエリも実行しなくなりますが、認識しているすべてのタイプのアドレス (ほとんどが IPv4 と IPv6) が表示されます。
于 2013-10-30T11:03:55.217 に答える
2
いいえ、inet_ntoa
「生のバイナリ」アドレス (ネットワーク順) のアドレスをドット付き 10 進数表現に変換するだけです。
getaddrinfo
DNS クエリに使用されます。取得するアドレスは、この生のバイナリ形式です。inet_ntoa
その後、アドレスを(より)人間が読めるようにするために使用できます。
getaddrinfo
evenが必ずしも DNS クエリになるとは限らないことに注意してください。ほとんどの OS は DNS キャッシュを保持し、以前に要求された場合はそこからアドレスを提供します。
于 2013-10-30T11:00:55.037 に答える