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


Использование нескольких протоколов

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

В большинстве случаев для каждого протокола или цепочки протоколов существует одна структура WSAPROTOCOL_INFO . Однако некоторые протоколы демонстрируют несколько вариантов поведения. Например, протокол SPX ориентирован на сообщения (то есть границы сообщения отправителя сохраняются сетью), но принимающий сокет может игнорировать эти границы сообщений и рассматривать их как поток байтов. Таким образом, для SPX могут существовать две различные записи структуры WSAPROTOCOL_INFO — по одной для каждого поведения.

В Windows Sockets 2 отображаются несколько новых значений семейства адресов, типа сокета и протокола. Windows Sockets 1.1 поддерживает одно семейство адресов (AF_INET) для IPv4, состоящее из небольшого количества хорошо известных типов сокетов и идентификаторов протоколов. Windows Sockets 2 сохраняет существующее семейство адресов, тип сокета и идентификаторы протокола для обеспечения совместимости, но также поддерживает новые значения семейства адресов для новых транспортных протоколов с новыми типами носителей.

Новые уникальные идентификаторы не обязательно хорошо известны, но это не должно создавать проблем. Приложениям, которые должны быть независимыми от протокола, рекомендуется выбирать протокол на основе его пригодности, а не значений, присвоенных их socket_type или параметрам протокола . Пригодность протокола определяется атрибутами связи, такими как поток сообщений и байтов, а также надежный и ненадежный, которые содержатся в структуре WSAPROTOCOL_INFO протокола. Выбор протоколов на основе пригодности в отличие от известных имен протоколов и типов сокетов позволяет приложениям, независимым от протокола, воспользоваться преимуществами новых транспортных протоколов и связанных с ними типов мультимедиа по мере их доступности.

Серверная половина клиентского или серверного приложения выигрывает, устанавливая прослушивающие сокеты на всех подходящих транспортных протоколах. Затем клиент может установить подключение с помощью любого подходящего протокола. Например, это позволит неизменить клиентское приложение независимо от того, работает ли оно в настольной системе, подключенной через локальную сеть, или на ноутбуке по беспроводной сети.