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


Параметры Bluetooth и сокета

Bluetooth для Windows поддерживает следующие параметры сокета. Параметры сокета задаются и запрашиваются с помощью функций setockopt и getsockopt соответственно. Все перечисленные ниже параметры можно использовать с функцией setsockopt, но для использования с функцией getsockopt можно использовать только параметр SO_BTH_MTU.

Для работы с параметрами сокета Bluetooth требуются следующие параметры:

  • Параметр s должен быть сокетом Bluetooth.
  • Параметр уровня должен быть SOL_RFCOMM.

SO_BTH_AUTHENTICATE

Для отключенных сокетов SO_BTH_AUTHENTICATE указывает, что проверка подлинности требуется для успешного завершения операции подключения или приема. Если два устройства Bluetooth ранее не прошли проверку подлинности, этот параметр активно инициирует проверку подлинности во время создания подключения. При необходимости пользовательский интерфейс для обмена ключами предоставляется операционной системой за пределами контекста приложения.

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

Для входящих подключений подключение отклоняется, если проверка подлинности не может быть установлена и возвращает ошибку WSAEHOSTDOWN . Дополнительные сведения об аутентификации устройств Bluetooth см. в разделе BluetoothAuthenticateDevice.

Для параметра сокета SO_BTH_AUTHENTICATE optval — это указатель на ULONG bAuthenticate и должен иметь значение TRUE; optlen эквивалентен "sizeof(ULONG)".

Windows XP с пакетом обновления 2 (SP2): SO_BTH_AUTHENTICATE запускает проверку подлинности для подключенных сокетов и принудительно выполняет проверку подлинности при подключении для неподключенных сокетов. Для входящих подключений подключение отклоняется, если проверка подлинности не может быть выполнена.

SO_BTH_ENCRYPT

В неподключенных сокетах параметр сокета SO_BTH_ENCRYPT применяет шифрование для установления подключения. Шифрование доступно только для прошедших проверку подлинности подключений. Для входящих подключений подключение, для которого невозможно установить шифрование, автоматически отклоняется и возвращает WSAEHOSTDOWN в качестве ошибки. Для исходящих подключений функция подключения завершается ошибкой wSAEACCES, если шифрование не удается установить. В ответ приложение может предложить пользователю пройти проверку подлинности двух устройств Bluetooth перед подключением. Дополнительные сведения об аутентификации устройств Bluetooth см. в разделе BluetoothAuthenticateDevice.

Для параметра сокета SO_BTH_ENCRYPT optval — это указатель на ULONG bEncrypt и должен иметь значение TRUE; optlen эквивалентен sizeof(ULONG).

Windows XP с пакетом обновления 2 (SP2): для сокета, подключенного и прошедшего проверку подлинности, SO_BTH_ENCRYPT запускает шифрование.

SO_BTH_MTU

Параметр сокета SO_BTH_MTU — это расширенный вариант, используемый в основном для проверки. Параметр SO_BTH_MTU получает или задает MTU RFCOMM по умолчанию (максимальная единица передачи) для согласования соединения со значением, отличным от значения протокола RFCOMM по умолчанию.

Так как MTU RFCOMM влияет на базовый MTU L2CAP, а минимумы протоколов и приложений и максимумы, значение по умолчанию для SO_BTH_MTU является только отправной точкой для согласования с удаленным одноранговым узлом, а окончательный согласованный MTU, скорее всего, зависит от значения по умолчанию. Установка значения SO_BTH_MTU может отрицательно повлиять на пропускную способность, и, как это, любое изменение должно выполняться с знанием базового протокола Bluetooth.

Параметр SO_BTH_MTU сокета можно выполнять на подключенных сокетах, но не влияет, если переговоры уже завершены. Установка его на сокет прослушивания (сервер) не влияет.

Объем данных, которые приложение может отправлять или получать в одном вызове сокета, не влияет на MTU; MTU влияет только на то, как базовый поставщик служб Сокетов Windows сегментирует пакеты для транспорта. Предлагаемый MTU и MTU в конечном счете должны быть согласованы между RFCOMM_MIN_MTU и RFCOMM_MAX_MTU, как определено в файле заголовка Ws2bth.h.

Для параметра сокета SO_BTH_MTU optval — это указатель на ULONG mtu; optlen эквивалентен "sizeof(ULONG)".

SO_BTH_MTU_MAX

Параметр сокета SO_BTH_MTU_MAX — это расширенный вариант, используемый в первую очередь для проверки. Параметр сокета SO_BTH_MTU_MAX задает максимальный MTU RFCOMM (максимальная единица передачи) для согласования подключений. Подключение ions с MTU RFCOMM, равным или больше, чем это значение, завершается сбоем во времяпроцесс приема подключения/. Если этот параметр сокета разрешен для подключенного сокета, он не действует, если согласование завершено. Установка этого параметра сокета для прослушивающего сокета распространяет значение для всех входящих подключений. Значение MAX MTU должно находиться между RFCOMM_MIN_MTU и RFCOMM_MAX_MTU, как определено в файле заголовка Ws2bth.h.

Для параметра сокета SO_BTH_MTU_MAX optval — это указатель на ULONG max_mtu; optlen эквивалентен "sizeof(ULONG)".

SO_BTH_MTU_MIN

Параметр сокета SO_BTH_MTU_MIN — это расширенный вариант, используемый в основном для проверки. Параметр сокета SO_BTH_MTU_MIN задает минимальный MTU RFCOMM (максимальная единица передачи) для согласования подключений. Подключение с MTU RFCOMM меньше этого значения во время сбояпроцесс приема подключения/. Если этот параметр сокета разрешен для подключенного сокета, он не действует, если согласование завершено. Установка этого параметра сокета для прослушивающего сокета распространяет значение для всех входящих подключений.

Только сокет прослушивания может пересмотреть MTU вниз, поэтому если значение, предлагаемое сокетом подключения, меньше значения, заданного для SO_BTH_MTU_MIN в сокете прослушивания, подключение отказывается. Минимальный MTU должен находиться между RFCOMM_MIN_MTU и RFCOMM_MAX_MTU, как определено в файле заголовка Ws2bth.h.

Для параметра сокета SO_BTH_MTU_MIN optval — это указатель на ULONG min_mtu; optlen эквивалентен "sizeof(ULONG)".

Сокеты Windows

getsockopt

setsockopt

BluetoothAuthenticateDevice

connect

Принять