我如何在Linux上使用C / C ++执行DNS查找?

如何使用ac api(或其他任何语言)获得与host命令类似的function? 我需要更多的信息,而不仅仅是由gethostbyname()给出的IP地址。 特别是与SMTP相关的数据。

Solutions Collecting From Web of "我如何在Linux上使用C / C ++执行DNS查找?"

如果阻塞(同步)查询正常,只需使用res_query() ,并将程序链接到-lresolv。

  len = res_query(host, C_IN, T_MX, &answer, sizeof(answer)); 

我会建议FireDNS 。 这是一个非常快速的C库,用于各种dns查询。

我知道这个问题很老,但是我很久没有去查找一个dns库了,这里的所有答案都是存根的。 我认为像adns / udns这样的图书馆不是为人类写的。 而FireDNS很长一段时间没有工作的下载链接。

我发现poslib是非常简单的界面最好的DNS库。

我喜欢adns,因为它允许异步请求

我不认为在C标准库中有这样一个函数,但许多脚本语言确实具有“内置”的功能。 例如,Perl有Net::DNS包:

 use Net::DNS; my @mx = mx("example.com"); foreach $host (@mx) { print $host; } 

如果你需要在C中做这个,一个快速的谷歌会显示一些你可以使用的C库:

  • ADNS
  • udns
  • dns.c
  • FireDNS (如ko-dos所提到的)

而且我会补充一点,除非您正在编写邮件中继,否则几乎肯定不应该查找MX记录 – 您应该将邮件传递给用户配置的邮件中继。