我会如何执行在Linux上使用C / C ++的DNS查找?(How might I perform

2019-06-25 23:05发布

我如何获得类似功能的host使用AC API(或任何其他语言为此事)命令? 我需要比由下式给出只是一个IP地址的信息gethostbyname() ; 具体地,SMTP相关的数据。

Answer 1:

如果阻塞(同步)查询是好的,只是使用res_query() ,并与-lresolv链接程序。

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


Answer 2:

我建议FireDNS 。 它是各种的DNS查询的速度非常快的C库。



Answer 3:

我知道这个问题是旧的,但我一直寻找一个dns库,这里所有的答案只是存根我。 我认为像ADNS / udns库没有写人类。 并在相当长的时间FireDNS没有工作的下载链接。

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



Answer 4:

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



Answer 5:

我想告诉你,除非你正在写一个邮件中继你几乎肯定不应该找MX记录 - 你应该传递邮件到用户配置的邮件中继来代替。



Answer 6:

您也可以尝试C-顷库https://c-ares.haxx.se/ ,它允许异步发送DNS查询。 它还配备了adig - 它自己的版本掏实用查询DNS。 你可以检查一下,看看如何解析DNS回复: adig.c源



Answer 7:

我不认为在这个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提到的)


文章来源: How might I perform DNS lookups using C/C++ on Linux?
标签: c linux smtp dns