名前解決を実行し、プロセスを適切に制御する必要があるプログラムを作成または変更します。したがって、私は を使用しませんgetaddrinfo()
。さらに深く掘り下げて、res_query()
/ res_send()
/ などを使用resolv.h
します。
文書化されていませんが、使用されるリゾルバーを設定する一般的な方法は update_res.nsaddr_list
です。しかし、resolv.h で定義されているこの配列に
struct sockaddr_in
は、IPv4 アドレスのみが格納されます。(IPv6 アドレスはstruct sockaddr_in6
であり、ファミリに依存しないシステムは を使用しますstruct sockaddr
。)
_res
IPv6アドレスも必要であることを伝える方法(少なくともさまざまなUnixの中で移植可能であることが望ましい)を探しています。
どうやら、ずっと前に、_res_ext
この機能を備えた FreeBSD がありましたが、最近の FreeBSD 7 ではもう見つかりません (grep
_res_ext /usr/include/resolv.h
何も見つかりません)。それを使用するコードを見つけることができます
( Google Codesearch で試してみてください)。
Alnitak のおかげで、明らかに今_res._ext
ではなく.res_ext
. この種のことはどこで文書化または発表されているのだろうか...移植性がどれほどかはわかりません_res._ext
。Debian と FreeBSD で見つけることができます。それを使用するプログラムはほとんどないようです。