Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 获取域名_C_Macos - Fatal编程技术网

C 获取域名

C 获取域名,c,macos,C,Macos,除了getdomainname()使用C在Mac上获取域名还有其他方法吗 我可以使用Cocoa API。 谢谢。如果您正在查找与本地系统对应的DNS名称,我认为getdomainname()不是您的朋友。根据,这是为了获取系统的NIS域名: Getdomainname() returns the standard NIS domain name for the current host, as previously set by setdomainname(). The parameter

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

我可以使用Cocoa API。
谢谢。

如果您正在查找与本地系统对应的DNS名称,我认为
getdomainname()
不是您的朋友。根据,这是为了获取系统的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中找到相应的名称。

为什么不使用
getdomainname()
?我想大多数其他API都会简单地调用它。我发现在网络中的某些计算机中,它不起作用,我想知道是否有一种替代方法可以在这个失败的情况下使用。是不是在这些“特定计算机”上,您应该改为查看主机名?已经这样做了。如果你能回答我提出的问题(如果你知道答案),我将不胜感激。我认为这不是一个复杂的问题。我只是没有找到答案,所以我在这里问。我知道如何使用
getsockname
获取本地IP,但是如何从中获取主机名?gethostbyname?正如您所料,
gethostbyname()
需要一个主机名作为输入。您有一个地址,因此需要
gethostbyaddr()