Функция getsockname (winsock.h)
Функция getsockname извлекает локальное имя сокета.
Синтаксис
int getsockname(
[in] SOCKET s,
[out] sockaddr *name,
[in, out] int *namelen
);
Параметры
[in] s
Дескриптор, определяющий сокет.
[out] name
Указатель на структуру SOCKADDR , которая получает адрес (имя) сокета.
[in, out] namelen
Размер буфера имен в байтах.
Возвращаемое значение
Если ошибка не возникает, функция getsockname возвращает ноль. В противном случае возвращается значение SOCKET_ERROR, а определенный код ошибки можно получить, вызвав WSAGetLastError.
Код ошибки | Значение |
---|---|
Перед использованием этого API необходимо выполнить успешный вызов WSAStartup . | |
Произошел сбой сетевой подсистемы. | |
Параметр name или namelen не является допустимой частью адресного пространства пользователя или параметр namelen слишком мал. | |
Выполняется блокирующий вызов Windows Sockets 1.1 или поставщик услуг по-прежнему обрабатывает функцию обратного вызова. | |
Дескриптор не является сокетом. | |
Сокет не привязан к адресу с привязкой или ADDR_ANY указан в параметре bind , но подключение еще не установлено. |
Комментарии
Функция getsockname извлекает текущее имя указанного дескриптора сокета в name. Он используется в связанном или подключенном сокете, заданном параметром s . Возвращается локальная связь. Этот вызов особенно полезен, если был выполнен вызов connect без предварительной привязки ; Функция getsockname предоставляет единственный способ определить локальную связь, заданную системой.
При вызове параметр namelen содержит размер буфера имен в байтах. При возврате параметр namelen содержит фактический размер параметра name в байтах.
Функция getsockname не всегда возвращает сведения об адресе узла, если сокет привязан к неопределенному адресу, если сокет не был подключен с помощью подключения или принятия (например, с помощью ADDR_ANY). Приложение Windows Sockets не должно предполагать, что адрес будет указан, если сокет не подключен. Адрес, который будет использоваться для сокета, неизвестен, если сокет не подключен при использовании в многосетвом узле. Если сокет использует протокол без подключения, адрес может быть недоступен до тех пор, пока в сокете не произойдет ввод-вывод.
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 |