Поделиться через


Функция gethostname (winsock.h)

Функция gethostname извлекает стандартное имя узла для локального компьютера.

Синтаксис

int gethostname(
  [out] char *name,
  [in]  int  namelen
);

Параметры

[out] name

Указатель на буфер, получающий имя локального узла.

[in] namelen

Длина (в байтах) буфера, на который указывает параметр name .

Возвращаемое значение

Если ошибка не возникает, gethostname возвращает ноль. В противном случае он возвращает SOCKET_ERROR и конкретный код ошибки можно получить, вызвав WSAGetLastError.

Код ошибки Значение
WSAEFAULT
Параметр name является указателем NULL или не является допустимой частью адресного пространства пользователя. Эта ошибка также возвращается, если размер буфера, указанный параметром namelen , слишком мал для хранения полного имени узла.
WSANOTINITIALISED
Перед использованием этой функции должен быть выполнен успешный вызов WSAStartup .
WSAENETDOWN
Произошел сбой сетевой подсистемы.
WSAEINPROGRESS
Выполняется блокирующий вызов 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, размер буфера всегда будет достаточным.

Примечание Если имя локального узла не настроено, gethostname должно быть выполнено успешно и вернуть имя узла маркера, которое может разрешить gethostbyname или WSAsyncGetHostByName .
 

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

См. также раздел

GetAddrInfoW

WSAsyncGetHostByName

Функции Winsock

Справочник по Winsock

Gethostbyname