Compartilhar via


Opções de Bluetooth e soquete

Bluetooth para Windows suporta as seguintes opções de soquete. As opções de soquete são definidas e consultadas usando as funções setsockopt e getsockopt, respectivamente. Todas as opções a seguir podem ser usadas com a função setsockopt, mas apenas a opção SO_BTH_MTU está disponível para uso com a função getsockopt.

As seguintes configurações são necessárias para trabalhar com opções de soquete Bluetooth:

  • O parâmetro s deve ser um soquete Bluetooth.
  • O parâmetro level deve ser SOL_RFCOMM.

SO_BTH_AUTHENTICATE

Para soquetes desconectados, o SO_BTH_AUTHENTICATE especifica que a autenticação é necessária para que uma operação de conexão ou aceitação seja concluída com êxito. A configuração dessa opção de soquete inicia ativamente a autenticação durante o estabelecimento da conexão, se os dois dispositivos Bluetooth não tiverem sido autenticados anteriormente. A interface do usuário para troca de chaves de acesso, se necessário, é fornecida pelo sistema operacional fora do contexto do aplicativo.

Para conexões de saída que exigem autenticação, a operação de conexão falhará com WSAEACCES se a autenticação não for bem-sucedida. Em resposta, o aplicativo pode solicitar que o usuário autentique os dois dispositivos Bluetooth antes da conexão.

Para conexões de entrada, a conexão será rejeitada se a autenticação não puder ser estabelecida e retornará um erro WSAEHOSTDOWN . Para obter mais informações sobre como autenticar dispositivos Bluetooth, consulte BluetoothAuthenticateDevice.

Para a opção de soquete SO_BTH_AUTHENTICATE , optval é um ponteiro para ULONG bAuthenticate e deve ser TRUE; optlen é equivalente a "sizeof(ULONG)".

Windows XP com SP2: SO_BTH_AUTHENTICATE inicia a autenticação para soquetes conectados e força a autenticação na conexão para soquetes desconectados. Para conexões de entrada, a conexão será rejeitada se a autenticação não puder ser executada.

SO_BTH_ENCRYPT

Em soquetes desconectados, a opção de soquete SO_BTH_ENCRYPT impõe criptografia para estabelecer uma conexão. A criptografia só está disponível para conexões autenticadas. Para conexões de entrada, uma conexão para a qual a criptografia não pode ser estabelecida é automaticamente rejeitada e retorna WSAEHOSTDOWN como o erro. Para conexões de saída, a função de conexão falhará com WSAEACCES se a criptografia não puder ser estabelecida. Em resposta, o aplicativo pode solicitar que o usuário autentique os dois dispositivos Bluetooth antes da conexão. Para obter mais informações sobre como autenticar dispositivos Bluetooth, consulte BluetoothAuthenticateDevice.

Para a opção de soquete SO_BTH_ENCRYPT, optval é um ponteiro para ULONG bEncrypt e deve ser TRUE; optlen é equivalente a sizeof(ULONG).

Windows XP com SP2: para um soquete conectado e autenticado, SO_BTH_ENCRYPT inicia a criptografia.

SO_BTH_MTU

A opção de soquete SO_BTH_MTU é uma opção avançada usada principalmente para validação. A opção SO_BTH_MTU obtém ou define MTU RFCOMM padrão (unidade de transmissão máxima) para negociação de conexão para um valor diferente do valor padrão do protocolo RFCOMM.

Como a MTU RFCOMM é afetada pela MTU L2CAP subjacente e pelos mínimos e máximos de protocolo e aplicativo, o valor padrão para SO_BTH_MTU é apenas um ponto de partida para negociação com o par remoto, e a MTU negociada final provavelmente variará do padrão. A definição do valor SO_BTH_MTU pode afetar negativamente a taxa de transferência e, como tal, qualquer modificação deve ser executada com conhecimento do protocolo Bluetooth subjacente.

A opção de soquete SO_BTH_MTU pode ser executada em soquetes conectados, mas não terá efeito se a negociação já tiver sido concluída. Configurá-lo no soquete de escuta (servidor) não tem efeito.

A quantidade de dados que um aplicativo pode enviar ou receber em uma única chamada de soquete não é afetada pelo MTU; A MTU afeta apenas como o provedor de serviços subjacente do Windows Sockets segmenta pacotes para transporte. Tanto o MTU proposto quanto o MTU negociado devem estar entre RFCOMM_MIN_MTU e RFCOMM_MAX_MTU, conforme definido no arquivo de cabeçalho Ws2bth.h.

Para a opção de soquete SO_BTH_MTU , optval é um ponteiro para ULONG mtu; optlen é equivalente a "sizeof(ULONG)".

SO_BTH_MTU_MAX

A opção de soquete SO_BTH_MTU_MAX é uma opção avançada usada principalmente para validação. A opção de soquete SO_BTH_MTU_MAX define a MTU (unidade de transmissão máxima) RFCOMM máxima para negociação de conexão. As conexões com uma MTU RFCOMM igual ou maior que esse valor falham durante o processo de aceitação da conexão/. Embora a configuração dessa opção de soquete seja permitida para um soquete conectado, ela não terá efeito se a negociação for concluída. A definição dessa opção de soquete em um soquete de escuta propaga o valor de todas as conexões de entrada. O valor MTU MAX deve estar entre RFCOMM_MIN_MTU e RFCOMM_MAX_MTU, conforme definido no arquivo de cabeçalho Ws2bth.h.

Para a opção de soquete SO_BTH_MTU_MAX , optval é um ponteiro para ULONG max_mtu; optlen é equivalente a "sizeof(ULONG)".

SO_BTH_MTU_MIN

A opção de soquete SO_BTH_MTU_MIN é uma opção avançada usada principalmente para validação. A opção de soquete SO_BTH_MTU_MIN define a MTU RFCOMM mínima (unidade de transmissão máxima) para negociação de conexão. As conexões com uma MTU RFCOMM menor que esse valor falham durante o processo de aceitação da conexão./ Embora a configuração dessa opção de soquete seja permitida para um soquete conectado, ela não terá efeito se a negociação for concluída. A definição dessa opção de soquete em um soquete de escuta propaga o valor de todas as conexões de entrada.

Somente um soquete de escuta pode revisar o MTU para baixo, portanto, se o valor proposto pelo soquete de conexão for menor do que o valor definido para SO_BTH_MTU_MIN no soquete de escuta, a conexão será recusada. O MTU mínimo deve estar entre RFCOMM_MIN_MTU e RFCOMM_MAX_MTU, conforme definido no arquivo de cabeçalho Ws2bth.h.

Para a opção de soquete SO_BTH_MTU_MIN, optval é um ponteiro para ULONG min_mtu; optlen é equivalente a "sizeof(ULONG)".

Windows Sockets

GetSockopt

Setsockopt

BluetoothAuthenticateDevice

connect

accept