2009-07-14 54 views
6

如何使用c api(或任何其他语言)获得与host命令类似的功能?我需要更多的信息,而不仅仅是gethostbyname()给出的IP地址;特别是与SMTP相关的数据。如何在Linux上使用C/C++执行DNS查找?

+0

当您提及* smtp-related *时,您的意思是域名的MX记录吗? – DaveR 2009-07-14 22:32:42

+0

重复的http://stackoverflow.com/questions/1093410/pulling-mx-record-from-dns-server和几个他的 – Alnitak 2009-07-15 13:30:51

回答

15

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

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

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

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

如果你需要做的在C,快速谷歌显示了一些C库在那里,你可以使用:

1

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

+1

该项目看起来被放弃(2004年的最后一个版本),不幸的是下载链接不起作用http://www.firestuff.org/)... – Destroyica 2012-03-29 08:09:53

0

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

1

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

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

相关问题