具有多个网络接口的机器上的gethostname

问题描述:

具有多个网络接口的机器上的gethostname系统调用返回什么?是否可以在操作系统级别进行配置?具有多个网络接口的机器上的gethostname

的用于为本机世界或多或少独立的主机名的数量的连接的网络接口的数量。您可以拥有多个具有单一名称的界面(尽管有点不同寻常),或者具有单一界面的多个界面(相当普遍)。

至于它返回什么价值,MSDN说:

F上获取主机名是在Windows Server 2008上群集资源使用,在Windows Server 2003或Windows 2000 Server和_CLUSTER_NETWORK_NAME_环境变量定义,那么此环境变量中的值将覆盖实际的主机名并返回。在群集资源上,_CLUSTER_NETWORK_NAME_环境变量包含群集的名称。

gethostname函数查询名称空间提供程序,以使用Svgguid.h头文件中定义的SVCID_HOSTNAME GUID确定本地主机名。如果没有名称空间提供程序响应,则gethostname函数将返回本地计算机的NetBIOS名称。

因此,它通常是DNS配置的问题,但对于群集的成员,您可以设置环境变量。

+1

感谢您的回复。假设机器有多个接口,每个接口都有不同的名称,这些名称中的哪些将被返回?是否有将一个界面设置为主要的概念? – Raam 2011-03-01 14:48:53

+0

@Raam:主要问题仍然是开放的(恕我直言),我需要知道同样的事情。为什么你将其标记为接受的答案? – 2012-05-03 11:06:42

主机名存储在操作系统级别。无论您的PC有多少个网卡,它们都是相同的。

+0

NETBIOS主机名存储在OSLevel中。 GetHostName()首先查询DNS。 – 2012-05-03 10:48:53