Функция обратного вызова LPWSPGETSOCKNAME (ws2spi.h)
Функция LPWSPGetSockName получает локальное имя сокета.
Синтаксис
LPWSPGETSOCKNAME Lpwspgetsockname;
int Lpwspgetsockname(
[in] SOCKET s,
[out] sockaddr *name,
[in, out] LPINT namelen,
[out] LPINT lpErrno
)
{...}
Параметры
[in] s
Дескриптор, определяющий привязанный сокет.
[out] name
Указатель на структуру sockaddr, используемую для указания адреса (имени) сокета.
[in, out] namelen
Во входных данных указатель на целое число, указывающее размер структуры, на которую указывает имя, в байтах. В выходных данных указывает размер возвращаемого имени в байтах.
[out] lpErrno
Указатель на код ошибки.
Возвращаемое значение
Если ошибки не произошло, LPWSPGetSockName возвращает ноль. В противном случае возвращается значение SOCKET_ERROR, а в lpErrno доступен определенный код ошибки.
Код ошибки | Значение |
---|---|
Произошел сбой сетевой подсистемы. | |
Имя или параметр namelen не является допустимой частью адресного пространства пользователя или параметр namelen слишком мал. | |
Функция вызывается при выполнении обратного вызова. | |
Дескриптор не является сокетом. | |
Сокет не привязан к адресу с LPWSPBind или ADDR_ANY указан в **LPWSPBind**, но подключение еще не установлено. |
Комментарии
LPWSPGetSockName извлекает текущее имя указанного дескриптора сокета в имени. Он используется в привязанном и (или) подключенном сокете, заданном параметром s . Возвращается локальная связь. Этот вызов особенно полезен, если вызов LPWSPConnect был выполнен без первого выполнения LPWSPBind ; поскольку этот вызов предоставляет единственное средство, с помощью которого можно определить локальную связь, заданную поставщиком услуг.
Если сокет был привязан к неустановленному адресу (например, ADDR_ANY), указывая, что для сокета следует использовать любой из адресов узла в указанном семействе адресов, LPWSPGetSockName не обязательно возвращает сведения об адресе узла, если только сокет не подключен к LPWSPConnect или LPWSPAccept. Клиент WINDOWS Sockets SPI не должен предполагать, что адрес будет указан, если сокет не подключен. Это связано с тем, что для многосетвого узла адрес, который будет использоваться для сокета, неизвестен, пока сокет не будет подключен.
Требования
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Верхняя часть | ws2spi.h |