faz*_*oso 3 c linux dns networking uclibc
我需要从应用程序中解析一些主机名。除了可以将我自己的DNS服务器用作解析程序的参数作为gethostbyname之外,还有其他选择吗?
我已经编写了自己的函数,但是我想可能有一个我不知道的函数。
我正在使用Linux / C语言。我的libc是uclibc。但是我也对GNU LibC感到好奇。
谢谢。
您需要进行自己的查询,但这并不困难。
为此,您需要使用res_query()函数系列,该函数系列允许您通过环境变量指定解析器:
res_init()函数读取配置文件(请参阅resolv.conf(5))以获取默认域名,搜索顺序和名称服务器地址。如果未提供服务器,则尝试使用本地主机。如果没有给出域,则使用与本地主机关联的域。可以使用环境变量LOCALDOMAIN覆盖它
IBM的文档更深入地介绍了如何设置变量:
通过将环境变量LOCALDOMAIN设置为以空格分隔的列表(最多包含6个搜索域,总共256个字符,包括空格),可以覆盖已配置的搜索列表(struct state.defdname和struct state.dnsrch)。如果指定了搜索列表,则查询中不使用默认本地域。
注意事项-
您应该在呼叫setenv()之前先呼叫res_init(),否则设置将不会被接听。记住,一旦完成,请取消设置
如果将主机名用于搜索域,则/etc/hosts仍然优先。
res_init()于2007年在uclibc中被适当地重入,所以我很确定您可以将其用于任何目的。
这些功能还有一个额外的好处,就是能够检索更详细的数据(MX等)。不过,如果您有一些较小的产品也能很好地工作,则不使用它是没有意义的。
| 归档时间: |
|
| 查看次数: |
3727 次 |
| 最近记录: |