DNS解析在C / C ++中

时间:2015-06-29 05:18:54

标签: python c++ c dns

在python中,我可以像这样使用DNS:

$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import dns.resolver
>>> answer = dns.resolver.query('www.example.com')
>>> print answer.response
id 37102
opcode QUERY
rcode NOERROR
flags QR RD RA
;QUESTION
www.example.com. IN A
;ANSWER
www.example.com. 3600 IN A 93.184.216.34
;AUTHORITY
;ADDITIONAL
>>> print answer.rrset
www.example.com. 3600 IN A 93.184.216.34
>>>

在C / C ++中实现相同结果的最简单方法是什么?使用库(哪一个最受欢迎?)或通过套接字或其他东西发送请求手册。

3 个答案:

答案 0 :(得分:3)

getaddrinfo开始。然后res_* functions进行高级查询。这些其他功能也可能对您有用。

gethostbyname

getnameinfo

gethostent

答案 1 :(得分:1)

使用getaddrinfo。getaddrinfo函数提供从ANSI主机名到地址的协议无关转换。
对于gethostbyname函数,它检索与主机名对应的主机信息来自主机数据库。
就像我们的朋友selbie所说,res_ *函数用于高级查询。

答案 2 :(得分:0)

如果要在C ++中使用DNS库:

<强>的Linux

  

GNU adns

Windows (阅读此帖的答案)

  

Where can I find a C++ DNS Library?