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


структура CSADDR_INFO (ws2def.h)

Структура CSADDR_INFO содержит сведения об адресе сокетов Windows для сокета, сетевой службы или поставщика пространства имен.

Синтаксис

typedef struct _CSADDR_INFO {
  SOCKET_ADDRESS LocalAddr;
  SOCKET_ADDRESS RemoteAddr;
  INT            iSocketType;
  INT            iProtocol;
} CSADDR_INFO, *PCSADDR_INFO, *LPCSADDR_INFO;

Члены

LocalAddr

Тип: SOCKET_ADDRESS

Локальный адрес сокетов Windows.

В клиентском приложении передайте этот адрес в функцию bind , чтобы получить доступ к сетевой службе.

В сетевой службе передайте этот адрес в функцию привязки , чтобы служба была привязана к соответствующему локальному адресу.

RemoteAddr

Тип: SOCKET_ADDRESS

Удаленный адрес сокетов Windows.

Существует несколько вариантов использования этого удаленного адреса:

  • Этот удаленный адрес можно использовать для подключения к службе с помощью функции connect . Это полезно, если приложение выполняет операции отправки/получения , включающие протоколы, ориентированные на подключение.
  • Этот удаленный адрес можно использовать с функцией sendto при обмене данными по протоколу без подключения (датаграмма). Если вы используете протокол без подключения, например UDP, sendto обычно является способом передачи данных в удаленную систему.

iSocketType

Тип: INT

Тип сокета Windows. Возможные значения для типа сокета определяются в файле заголовка Winsock2.h .

В следующей таблице перечислены возможные значения, поддерживаемые для сокетов Windows 2:

Значение Значение
SOCK_STREAM
Сокет потока. Это протокол, который отправляет данные в виде потока байтов без границ сообщений. Этот тип сокета предоставляет виртуационные, надежные двусторонние потоки байтов на основе подключения с механизмом передачи данных OOB. Этот тип сокета использует протокол TCP для семейства интернет-адресов (AF_INET или AF_INET6).
SOCK_DGRAM
Сокет датаграммы. Этот тип сокета поддерживает датаграммы, которые являются ненадежными буферами фиксированной (обычно небольшой) максимальной длины без подключения. Этот тип сокета использует протокол UDP для семейства интернет-адресов (AF_INET или AF_INET6).

Службы используют функцию recvfrom для получения датаграмм. Функции прослушивания и принятия не работают с датаграммами.

SOCK_RDM
Сокет надежной датаграммы сообщения. Этот тип сокета сохраняет границы сообщений в данных. Примером этого типа является реализация протокола прагматической общей многоадресной рассылки (PGM) в Windows, которую часто называют надежным многоадресным программированием.
SOCK_SEQPACKET
Сокет потока последовательного пакета. Этот тип сокета предоставляет пакет псевдопотока на основе датаграмм.

iProtocol

Тип: INT

Используемый протокол. Возможные параметры параметра протокола зависят от указанного семейства адресов и типа сокета. Возможные значения определяются в файлах заголовков Winsock2.h и Wsrm.h .

В windows SDK, выпущенном для Windows Vista и более поздних версий, изменилась организация файлов заголовков, и этот параметр может быть одним из значений из типа перечисления IPPROTO , определенного в файле заголовка Ws2def.h . Обратите внимание, что файл заголовка Ws2def.h автоматически включается в Winsock2.h и никогда не должен использоваться напрямую.

В таблице ниже перечислены общие значения для протокола , хотя возможны и многие другие значения.

protocol Значение
IPPROTO_TCP
6
Протокол TCP. Это возможное значение, если семейство адресов является AF_INET или AF_INET6 , а элемент iSocketTypeSOCK_STREAM.
IPPROTO_UDP
17
Протокол пользовательских датаграмм (UDP). Это возможное значение, если семейство адресов является AF_INET или AF_INET6 , а элемент iSocketTypeSOCK_DGRAM.
IPPROTO_RM
113
Протокол PGM для надежной многоадресной рассылки. Это возможное значение, если семейство адресов является AF_INET , а элемент iSocketTypeSOCK_RDM. В windows SDK, выпущенном для Windows Vista и более поздних версий, это значение также называется IPPROTO_PGM.

Комментарии

Функция GetAddressByName получает сведения об адресе windows Sockets с помощью CSADDR_INFO структур.

Функция getsockopt , вызываемая с параметром сокета SO_BSP_STATE , извлекает структуру CSADDR_INFO для указанного сокета.

Требования

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

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

GetAddressByName

SOCKET_ADDRESS

SO_BSP_STATE

bind

connect;

getsockopt

Recv

send

Sendto