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


Функция обратного вызова 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 доступен определенный код ошибки.

Код ошибки Значение
WSAENETDOWN
Произошел сбой сетевой подсистемы.
WSAEFAULT
Имя или параметр namelen не является допустимой частью адресного пространства пользователя или параметр namelen слишком мал.
WSAEINPROGRESS
Функция вызывается при выполнении обратного вызова.
WSAENOTSOCK
Дескриптор не является сокетом.
WSAEINVAL
Сокет не привязан к адресу с LPWSPBind или ADDR_ANY указан в **LPWSPBind**, но подключение еще не установлено.

Комментарии

LPWSPGetSockName извлекает текущее имя указанного дескриптора сокета в имени. Он используется в привязанном и (или) подключенном сокете, заданном параметром s . Возвращается локальная связь. Этот вызов особенно полезен, если вызов LPWSPConnect был выполнен без первого выполнения LPWSPBind ; поскольку этот вызов предоставляет единственное средство, с помощью которого можно определить локальную связь, заданную поставщиком услуг.

Если сокет был привязан к неустановленному адресу (например, ADDR_ANY), указывая, что для сокета следует использовать любой из адресов узла в указанном семействе адресов, LPWSPGetSockName не обязательно возвращает сведения об адресе узла, если только сокет не подключен к LPWSPConnect или LPWSPAccept. Клиент WINDOWS Sockets SPI не должен предполагать, что адрес будет указан, если сокет не подключен. Это связано с тем, что для многосетвого узла адрес, который будет использоваться для сокета, неизвестен, пока сокет не будет подключен.

Требования

   
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть ws2spi.h

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

LPWSPBind

LPWSPGetPeerName

LPWSPSocket