获取域名

时间:2011-12-01 15:32:25

标签: c macos

除了getdomainname()之外还有其他方法可以使用C在Mac上获取域名吗?

我可以使用Cocoa API。 感谢。

1 个答案:

答案 0 :(得分:1)

如果您正在寻找与本地系统相对应的DNS名称,我认为getdomainname()不是您的朋友。根据{{​​3}},这是为了获取系统的 NIS 域名:

 Getdomainname() returns the standard NIS domain name for the current
 host, as previously set by setdomainname().  The parameter namelen speci-fies specifies
 fies the size of the name array.  The returned name is null-terminated
 unless insufficient space is provided.

事实上,说主机没有拥有 DNS域名,这在很大程度上是准确的。系统上的每个接口都有一个地址,可能一个解析到该地址的DNS记录,但事实是(a)可能是对应的DNS记录,以及(b)可能存在解析到主机和其他系统的DNS记录。例如,主机名“google.com”解析为一系列不同的地址:

$ host -t A google.com
google.com has address 74.125.226.244
google.com has address 74.125.226.240
google.com has address 74.125.226.241
google.com has address 74.125.226.242
google.com has address 74.125.226.243

当然,您的系统可能有多个与之关联的IP地址(例如,有线和无线)。

如果您愿意交叉并希望,最好的办法是通过在打开的连接上调用getsockname()来确定您的本地IP地址,然后对该地址进行反向DNS查找在DNS中找到相应的名称。