Condividi tramite


Opzioni Bluetooth e Socket

Bluetooth per Windows supporta le opzioni socket seguenti. Le opzioni socket vengono impostate e sottoposte a query usando rispettivamente le funzioni setsockopt e getsockopt. Tutte le opzioni seguenti possono essere usate con la funzione setsockopt , ma solo l'opzione SO_BTH_MTU è disponibile per l'uso con la funzione getsockopt .

Per l'uso delle opzioni socket Bluetooth sono necessarie le impostazioni seguenti:

  • Il parametro s deve essere un socket Bluetooth.
  • Il parametro level deve essere SOL_RFCOMM.

SO_BTH_AUTHENTICATE

Per i socket disconnessi, il SO_BTH_AUTHENTICATE specifica che l'autenticazione è necessaria per il completamento di un'operazione di connessione o accettazione. L'impostazione di questa opzione socket avvia attivamente l'autenticazione durante la connessione, se i due dispositivi Bluetooth non sono stati autenticati in precedenza. L'interfaccia utente per lo scambio passkey, se necessario, viene fornita dal sistema operativo all'esterno del contesto dell'applicazione.

Per le connessioni in uscita che richiedono l'autenticazione, l'operazione di connessione ha esito negativo con WSAEACCES se l'autenticazione non riesce. In risposta, l'applicazione può richiedere all'utente di autenticare i due dispositivi Bluetooth prima della connessione.

Per le connessioni in ingresso, la connessione viene rifiutata se non è possibile stabilire l'autenticazione e restituisce un errore WSAEHOSTDOWN . Per altre informazioni sull'autenticazione dei dispositivi Bluetooth, vedere BluetoothAuthenticateDevice.

Per l'opzione socket SO_BTH_AUTHENTICATE , optval è un puntatore a ULONG bAuthenticate e deve essere TRUE; optlen equivale a "sizeof(ULONG)".

Windows XP con SP2: SO_BTH_AUTHENTICATE avvia l'autenticazione per i socket connessi e forza l'autenticazione alla connessione per socket non connessi. Per le connessioni in ingresso, la connessione viene rifiutata se non è possibile eseguire l'autenticazione.

SO_BTH_ENCRYPT

Nei socket non connessi, l'opzione socket SO_BTH_ENCRYPT applica la crittografia per stabilire una connessione. La crittografia è disponibile solo per le connessioni autenticate. Per le connessioni in ingresso, una connessione per cui non è possibile stabilire la crittografia viene rifiutata automaticamente e restituisce WSAEHOSTDOWN come errore. Per le connessioni in uscita, la funzione di connessione ha esito negativo con WSAEACCES se non è possibile stabilire la crittografia. In risposta, l'applicazione può richiedere all'utente di autenticare i due dispositivi Bluetooth prima della connessione. Per altre informazioni sull'autenticazione dei dispositivi Bluetooth, vedere BluetoothAuthenticateDevice.

Per l'opzione socket SO_BTH_ENCRYPT, optval è un puntatore a ULONG bEncrypt e deve essere TRUE; optlen equivale a sizeof(ULONG).

Windows XP con SP2: per un socket connesso e autenticato, SO_BTH_ENCRYPT avvia la crittografia.

SO_BTH_MTU

L'opzione socket SO_BTH_MTU è un'opzione avanzata usata principalmente per la convalida. L'opzione SO_BTH_MTU ottiene o imposta l'opzione RFCOMM MTU predefinita (unità di trasmissione massima) per la negoziazione della connessione a un valore diverso dal valore predefinito del protocollo RFCOMM.

Poiché RFCOMM MTU è interessato dall'MTU L2CAP sottostante e dai valori minimi e massimi dell'applicazione, il valore predefinito per SO_BTH_MTU è solo un punto di partenza per la negoziazione con il peer remoto e la MTU negoziata finale può variare rispetto all'impostazione predefinita. L'impostazione del valore SO_BTH_MTU può influire negativamente sulla velocità effettiva e, di conseguenza, qualsiasi modifica deve essere eseguita con la conoscenza del protocollo Bluetooth sottostante.

L'opzione socket SO_BTH_MTU può essere eseguita sui socket connessi, ma non ha alcun effetto se la negoziazione è già stata completata. L'impostazione del socket in ascolto (server) non ha alcun effetto.

La quantità di dati che un'applicazione può inviare o ricevere in una singola chiamata socket non è influenzata dall'MTU; MTU influisce solo sul modo in cui il provider di servizi Windows Sockets sottostante segmenta i pacchetti per il trasporto. Sia la MTU proposta che la MTU negoziata devono essere tra RFCOMM_MIN_MTU e RFCOMM_MAX_MTU, come definito nel file di intestazione Ws2bth.h.

Per l'opzione socket SO_BTH_MTU , optval è un puntatore a ULONG mtu; optlen equivale a "sizeof(ULONG)".

SO_BTH_MTU_MAX

L'opzione SO_BTH_MTU_MAX socket è un'opzione avanzata usata principalmente per la convalida. L'opzione socket SO_BTH_MTU_MAX imposta il numero massimo di MTU RFCOMM (unità di trasmissione massima) per la negoziazione della connessione. Connessione ions con un MTU RFCOMM uguale o maggiore di questo valore hanno esito negativo durante il connetti/processo accept. Mentre l'impostazione di questa opzione socket è consentita per un socket connesso, non ha alcun effetto se la negoziazione è stata completata. L'impostazione di questa opzione socket su un socket in ascolto propaga il valore per tutte le connessioni in ingresso. Il valore MAX MTU deve essere compreso tra RFCOMM_MIN_MTU e RFCOMM_MAX_MTU, come definito nel file di intestazione Ws2bth.h.

Per l'opzione socket SO_BTH_MTU_MAX , optval è un puntatore a ULONG max_mtu; optlen equivale a "sizeof(ULONG)".

SO_BTH_MTU_MIN

L'opzione socket SO_BTH_MTU_MIN è un'opzione avanzata usata principalmente per la convalida. L'opzione socket SO_BTH_MTU_MIN imposta la MTU RFCOMM minima (unità di trasmissione massima) per la negoziazione della connessione. Connessione ions con un MTU RFCOMM minore di questo valore durante il connetti/processo accept. Mentre l'impostazione di questa opzione socket è consentita per un socket connesso, non ha alcun effetto se la negoziazione è stata completata. L'impostazione di questa opzione socket su un socket in ascolto propaga il valore per tutte le connessioni in ingresso.

Solo un socket di ascolto può modificare la MTU verso il basso, pertanto se il valore proposto dal socket di connessione è minore del valore impostato per SO_BTH_MTU_MIN sul socket di ascolto, la connessione viene rifiutata. La MTU minima deve essere compresa tra RFCOMM_MIN_MTU e RFCOMM_MAX_MTU, come definito nel file di intestazione Ws2bth.h.

Per l'opzione socket SO_BTH_MTU_MIN, optval è un puntatore a ULONG min_mtu; optlen equivale a "sizeof(ULONG)".

Windows Sockets

getsockopt

Setsockopt

BluetoothAuthenticateDevice

connect

Accettare