linux 函数 inet_ntoa 会导致 linux 中的 dns 查询吗?任何人都可以举一些例子吗?我想限制进行的 dns 查找,在这种情况下使用 inet_ntoa 会导致 dns 查询?
问问题
137 次
3 回答
2
不,inet_ntoa
只需将“原始二进制”地址(按网络顺序)中的地址转换为其点分十进制表示。
getaddrinfo
用于 DNS 查询。它获得的地址就是这种原始二进制形式。inet_ntoa
然后可以用来使地址(更多)人类可读。
请注意,甚至getaddrinfo
不一定会导致 DNS 查询。大多数操作系统保留一个 DNS 缓存并从那里提供地址(如果之前已请求)。
于 2013-10-30T11:00:55.037 回答
2
不,它只是将给定的“二进制编码”IPv4 地址转换为字符串。
顺便说一句,与 IPv4 一起,此功能也变得越来越“老式”。除此之外,它不是线程安全的,因为返回地址的缓冲区将在每次调用时重复使用。
如果您getnameinfo()
在程序中使用并提供标志NI_NUMERICHOST
和NI_NUMERICSERV
,该函数也将避免进行 DNS 查询,但它会显示它知道的所有类型的地址(主要是 IPv4 和 IPv6)。
于 2013-10-30T11:03:55.217 回答
1
inet_ntoa
独立于 DNS;它将 32 位 IPV4 地址转换为点分四进制表示法。inet_addr
执行反向翻译。都不涉及 DNS 名称到地址或地址到名称查找。
如今,两者都被弃用为“仅限 IPV4”,以支持inet_ntop
可以处理 IPV4 和 IPV6 转换的功能。
于 2013-10-30T12:57:17.970 回答