Параметры Bluetooth и сокета
Bluetooth для Windows поддерживает следующие параметры сокета. Параметры сокета задаются и запрашиваются с помощью функций setockopt и функциях getsockopt соответственно. Все перечисленные ниже параметры можно использовать с функцией setsockopt, но только параметр SO_BTH_MTU доступен для использования с функцией getsockopt.
Для работы с параметрами сокета Bluetooth требуются следующие параметры:
- Параметр должен быть сокетом Bluetooth.
- Параметр уровня должен быть SOL_RFCOMM.
SO_BTH_AUTHENTICATE
Для отключенных сокетов SO_BTH_AUTHENTICATE указывает, что проверка подлинности требуется для подключения или принять операцию успешно. Если два устройства Bluetooth ранее не прошли проверку подлинности, этот параметр активно инициирует проверку подлинности во время создания подключения. При необходимости пользовательский интерфейс для обмена ключами предоставляется операционной системой за пределами контекста приложения.
Для исходящих подключений , требующих проверки подлинности, операция подключения завершается ошибкой WSAEACCES, если проверка подлинности не выполнена. В ответ приложение может предложить пользователю пройти проверку подлинности двух устройств Bluetooth перед подключением.
Для входящих подключений подключение отклоняется, если проверка подлинности не может быть установлена и возвращает ошибку WSAEHOSTDOWN. Дополнительные сведения об проверке подлинности устройств Bluetooth см. в разделе BluetoothAuthenticateDevice.
Для параметра сокета SO_BTH_AUTHENTICATEoptval является указателем на 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_MTUoptval — указатель на ULONG mtu; optlen эквивалентен "sizeof(ULONG)".
SO_BTH_MTU_MAX
Параметр сокета SO_BTH_MTU_MAX — это расширенный вариант, используемый в основном для проверки. Параметр сокета SO_BTH_MTU_MAX задает максимальный MTU RFCOMM (максимальная единица передачи) для согласования подключений. Подключения с MTU RFCOMM, равным или больше этого значения, завершаются сбоем во время подключения/принимать процесса. Если этот параметр сокета разрешен для подключенного сокета, он не действует, если согласование завершено. Установка этого параметра сокета для прослушивающего сокета распространяет значение для всех входящих подключений. Значение MAX MTU должно находиться между RFCOMM_MIN_MTU и RFCOMM_MAX_MTU, как определено в файле заголовка Ws2bth.h.
Для параметра сокета SO_BTH_MTU_MAXoptval является указателем на 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)".
Связанные разделы