Bluetooth- und Socketoptionen
Bluetooth für Windows unterstützt die folgenden Socketoptionen. Socketoptionen werden mithilfe der Funktionen setsockopt bzw . getsockopt festgelegt und abgefragt. Alle folgenden Optionen können mit der funktion setsockopt verwendet werden, aber nur die option SO_BTH_MTU ist für die Verwendung mit der getockopt-Funktion verfügbar.
Die folgenden Einstellungen sind für das Arbeiten mit Bluetooth-Socketoptionen erforderlich:
- Der s-Parameter muss ein Bluetooth-Socket sein.
- Der Levelparameter muss SOL_RFCOMM sein.
SO_BTH_AUTHENTICATE
Bei getrennten Sockets gibt die SO_BTH_AUTHENTICATE an, dass die Authentifizierung erforderlich ist, damit ein Verbindungs- oder Annahmevorgang erfolgreich abgeschlossen werden kann. Wenn Sie diese Socketoption festlegen, wird die Authentifizierung während der Verbindungsherstellung aktiv initiiert, wenn die beiden Bluetooth-Geräte zuvor nicht authentifiziert wurden. Die Benutzeroberfläche für den Kennungsaustausch wird ggf. vom Betriebssystem außerhalb des Anwendungskontexts bereitgestellt.
Bei ausgehenden Verbindungen, die eine Authentifizierung erfordern, schlägt der Verbindungsvorgang mit WSAEACCES fehl, wenn die Authentifizierung nicht erfolgreich ist. Als Antwort fordert die Anwendung den Benutzer möglicherweise auf, die beiden Bluetooth-Geräte vor der Verbindung zu authentifizieren.
Bei eingehenden Verbindungen wird die Verbindung abgelehnt, wenn die Authentifizierung nicht eingerichtet werden kann, und gibt einen WSAEHOSTDOWN-Fehler zurück. Weitere Informationen zur Authentifizierung von Bluetooth-Geräten finden Sie unter BluetoothAuthenticateDevice.
Für die SO_BTH_AUTHENTICATE Socketoption ist optval ein Zeiger auf ULONG bAuthenticate und muss TRUE sein. optlen entspricht "sizeof(ULONG)".
Windows XP mit SP2: SO_BTH_AUTHENTICATE startet die Authentifizierung für verbundene Sockets und erzwingt die Authentifizierung bei der Verbindung für nicht verbundene Sockets. Bei eingehenden Verbindungen wird die Verbindung abgelehnt, wenn die Authentifizierung nicht durchgeführt werden kann.
SO_BTH_ENCRYPT
Bei nicht verbundenen Sockets erzwingt die SO_BTH_ENCRYPT Socketoption die Verschlüsselung, um eine Verbindung herzustellen. Die Verschlüsselung ist nur für authentifizierte Verbindungen verfügbar. Bei eingehenden Verbindungen wird eine Verbindung, für die keine Verschlüsselung eingerichtet werden kann, automatisch abgelehnt und gibt WSAEHOSTDOWN als Fehler zurück. Bei ausgehenden Verbindungen schlägt die Verbindungsfunktion mit WSAEACCES fehl, wenn die Verschlüsselung nicht eingerichtet werden kann. Als Antwort fordert die Anwendung den Benutzer möglicherweise auf, die beiden Bluetooth-Geräte vor der Verbindung zu authentifizieren. Weitere Informationen zur Authentifizierung von Bluetooth-Geräten finden Sie unter BluetoothAuthenticateDevice.
Für die SO_BTH_ENCRYPT Socketoption ist optval ein Zeiger auf ULONG bEncrypt und muss TRUE sein. optlen entspricht sizeof(ULONG).
Windows XP mit SP2: Bei einem verbundenen und authentifizierten Socket startet SO_BTH_ENCRYPT die Verschlüsselung.
SO_BTH_MTU
Die SO_BTH_MTU Socketoption ist eine erweiterte Option, die hauptsächlich für die Validierung verwendet wird. Die option SO_BTH_MTU ruft die Standard-RFCOMM-MTU (maximale Übertragungseinheit) für die Verbindungsaushandlung auf einen anderen Wert als den RFCOMM-Protokollstandardwert ab oder legt diese fest.
Da die RFCOMM-MTU von der zugrunde liegenden L2CAP-MTU sowie von Protokoll- und Anwendungsminimierungen und -maximums betroffen ist, ist der Standardwert für SO_BTH_MTU nur ein Ausgangspunkt für die Aushandlung mit dem Remotepeer, und die endgültige ausgehandelte MTU wird wahrscheinlich von der Standardeinstellung abweichen. Das Festlegen des SO_BTH_MTU Werts kann sich negativ auf den Durchsatz auswirken, und daher sollte jede Änderung mit Kenntnis des zugrunde liegenden Bluetooth-Protokolls durchgeführt werden.
Die SO_BTH_MTU Socketoption kann für verbundene Sockets ausgeführt werden, hat aber keine Auswirkung, wenn die Aushandlung bereits abgeschlossen ist. Das Festlegen des Sockets für die Überwachung (Server) hat keine Auswirkung.
Die Datenmenge, die eine Anwendung in einem einzelnen Socketaufruf senden oder empfangen kann, wird von der MTU nicht beeinflusst. MTU wirkt sich nur auf die Segmentierung von Paketen für den Transport durch den zugrunde liegenden Windows Sockets-Dienstanbieter aus. Sowohl die vorgeschlagene MTU als auch die MTU müssen sich zwischen RFCOMM_MIN_MTU und RFCOMM_MAX_MTU befinden, wie in der Ws2bth.h-Headerdatei definiert.
Für die SO_BTH_MTU Socketoption ist optval ein Zeiger auf die ULONG-MTU. optlen entspricht "sizeof(ULONG)".
SO_BTH_MTU_MAX
Die SO_BTH_MTU_MAX Socketoption ist eine erweiterte Option, die hauptsächlich für die Validierung verwendet wird. Die SO_BTH_MTU_MAX-Socketoption legt die maximale RFCOMM-MTU (maximale Übertragungseinheit) für die Verbindungsverhandlung fest. Verbindungen mit einer RFCOMM-MTU, die gleich oder größer als dieser Wert ist, schlagen während desVerbindungsakzeptierungsprozesses/ fehl. Das Festlegen dieser Socketoption ist zwar für einen verbundenen Socket zulässig, hat jedoch keine Auswirkungen, wenn die Aushandlung abgeschlossen wurde. Durch Festlegen dieser Socketoption für einen lauschenden Socket wird der Wert für alle eingehenden Verbindungen weitergegeben. Der MAX MTU-Wert muss sich zwischen RFCOMM_MIN_MTU und RFCOMM_MAX_MTU befinden, wie in der Ws2bth.h-Headerdatei definiert.
Für die SO_BTH_MTU_MAX Socketoption ist optval ein Zeiger auf ULONG max_mtu. optlen entspricht "sizeof(ULONG)".
SO_BTH_MTU_MIN
Die SO_BTH_MTU_MIN Socketoption ist eine erweiterte Option, die hauptsächlich für die Validierung verwendet wird. Die SO_BTH_MTU_MIN Socketoption legt die minimale RFCOMM-MTU (maximale Übertragungseinheit) für die Verbindungsverhandlung fest. Verbindungen mit einer RFCOMM-MTU, die kleiner als dieser Wert ist, schlagen während desVerbindungsakzeptierungsprozesses/ fehl. Das Festlegen dieser Socketoption ist zwar für einen verbundenen Socket zulässig, hat jedoch keine Auswirkungen, wenn die Aushandlung abgeschlossen wurde. Durch Festlegen dieser Socketoption für einen lauschenden Socket wird der Wert für alle eingehenden Verbindungen weitergegeben.
Nur ein Lauschocket kann die MTU nach unten revidieren. Wenn der vom Verbindungssocket vorgeschlagene Wert kleiner als der wert ist, der für SO_BTH_MTU_MIN auf dem Listensocket festgelegt ist, wird die Verbindung daher abgelehnt. Die MTU muss mindestens zwischen RFCOMM_MIN_MTU und RFCOMM_MAX_MTU, wie in der Ws2bth.h-Headerdatei definiert, sein.
Für die SO_BTH_MTU_MIN Socketoption ist optval ein Zeiger auf ULONG min_mtu. optlen entspricht "sizeof(ULONG)".
Zugehörige Themen