除了getdomainname()
之外还有其他方法可以使用C在Mac上获取域名吗?
我可以使用Cocoa API。 感谢。
答案 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中找到相应的名称。