Функция gethostname (winsock.h)
Функция gethostname извлекает стандартное имя узла для локального компьютера.
Синтаксис
int gethostname(
[out] char *name,
[in] int namelen
);
Параметры
[out] name
Указатель на буфер, получающий имя локального узла.
[in] namelen
Длина (в байтах) буфера, на который указывает параметр name .
Возвращаемое значение
Если ошибка не возникает, gethostname возвращает ноль. В противном случае он возвращает SOCKET_ERROR и конкретный код ошибки можно получить, вызвав WSAGetLastError.
Код ошибки | Значение |
---|---|
Параметр name является указателем NULL или не является допустимой частью адресного пространства пользователя. Эта ошибка также возвращается, если размер буфера, указанный параметром namelen , слишком мал для хранения полного имени узла. | |
Перед использованием этой функции должен быть выполнен успешный вызов WSAStartup . | |
Произошел сбой сетевой подсистемы. | |
Выполняется блокирующий вызов Windows Sockets 1.1 или поставщик услуг по-прежнему обрабатывает функцию обратного вызова. |
Комментарии
Функция gethostname возвращает имя локального узла в буфер, указанный параметром name . Имя узла возвращается в виде строки с пустым завершением. Форма имени узла зависит от поставщика сокетов Windows— это может быть простое имя узла или полное доменное имя. Тем не менее гарантируется, что возвращенное имя будет успешно проанализировано с помощью команд gethostbyname и WSAsyncGetHostByName.
Максимальная длина имени, возвращаемого в буфере, на который указывает параметр name , зависит от поставщика пространства имен.
Если функция gethostname используется для ресурса кластера в Windows Server 2008, Windows Server 2003 или Windows 2000 Server и определена переменная среды CLUSTER_NETWORK_NAME , то значение в этой переменной среды переопределяет фактическое имя узла и возвращается. В кластерном ресурсе переменная среды CLUSTER_NETWORK_NAME содержит имя кластера.
Функция gethostname запрашивает поставщиков пространств имен, чтобы определить имя локального узла с помощью SVCID_HOSTNAME GUID, определенного в файле заголовка Svgguid.h . Если поставщик пространства имен не отвечает, функция gethostname возвращает NetBIOS-имя локального компьютера.
Максимальная длина (в байтах) строки, возвращаемой в буфере, на который указывает параметр name , зависит от поставщика пространства имен, но эта строка должна быть не более 256 байт. Таким образом, если в параметре name передается буфер размером 256 байт, а параметр namelen имеет значение 256, размер буфера всегда будет достаточным.
Windows Phone 8. Эта функция поддерживается для приложений Магазина Windows Phone Windows Phone 8 и более поздних версий.
Windows 8.1 и Windows Server 2012 R2. Эта функция поддерживается для приложений Магазина Windows в Windows 8.1, Windows Server 2012 R2 и более поздних версий.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8.1, Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2003 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | winsock.h (включая Winsock2.h) |
Библиотека | Ws2_32.lib |
DLL | Ws2_32.dll |