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 setsockopt-Funktion verwendet werden, aber nur die OPTION SO _ BTH _ MTU ist für die Verwendung mit der getsockopt-Funktion verfügbar.
Für die Arbeit mit Bluetooth Socketoptionen sind die folgenden Einstellungen erforderlich:
- Der s-Parameter muss ein Bluetooth Socket sein.
- Der level-Parameter muss SOL _ RFCOMM sein.
_ _ BTH-AUTHENTIFIZIERUNG
Bei getrennten Sockets gibt _ BTH _ AUTHENTICATE an, dass eine Authentifizierung erforderlich ist, damit ein Verbindungs- oder Annahmevorgang erfolgreich abgeschlossen werden kann. Wenn Sie diese Socketoption festlegen, wird die Authentifizierung während der Verbindungseinrichtung aktiv initiiert, wenn die beiden Bluetooth Geräte zuvor nicht authentifiziert wurden. Die Benutzeroberfläche für den Austausch von Hauptschlüsseln 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 war. Als Reaktion darauf 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 hergestellt werden kann, und es wird ein WSAEHOSTDOWN-Fehler zurückgegeben. Weitere Informationen zur Authentifizierung Bluetooth Geräten finden Sie unter BluetoothAuthenticateDevice.
Für die Socketoption SO _ BTH _ AUTHENTICATE 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 ausgeführt werden kann.
SO _ BTH _ ENCRYPT
Bei nicht verbundenen Sockets erzwingt die Socketoption SO _ BTH _ ENCRYPT 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 hergestellt werden kann, automatisch abgelehnt und gibt WSAEHOSTDOWN als Fehler zurück. Bei ausgehenden Verbindungen schlägt die Connect-Funktion mit WSAEACCES fehl, wenn die Verschlüsselung nicht eingerichtet werden kann. Als Reaktion darauf fordert die Anwendung den Benutzer möglicherweise auf, die beiden Bluetooth Geräte vor der Verbindung zu authentifizieren. Weitere Informationen zur Authentifizierung Bluetooth Geräten finden Sie unter BluetoothAuthenticateDevice.
Für die Socketoption SO _ BTH _ ENCRYPT ist optval ein Zeiger auf ULONG bEncrypt und muss TRUE sein. optlen entspricht sizeof(ULONG).
Windows XP mit SP2: Für einen Socket, der verbunden und authentifiziert ist, startet _ 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 STANDARDMÄßIGE RFCOMM-MTU (maximale Übertragungseinheit) für die Verbindungsaushandlung auf einen anderen Wert als den RFCOMM-Protokollstandardwert ab oder legt diesen fest.
Da RFCOMM MTU von der zugrunde liegenden L2CAP-MTU sowie den Mindest- und Höchstwerten für Protokoll und Anwendung betroffen ist, ist der Standardwert für SO _ BTH _ MTU nur ein Ausgangspunkt für die Aushandlung mit dem Remotespeer, und die endgültige ausgehandelte MTU variiert wahrscheinlich vom Standard. Das Festlegen des _ _ BTH-MTU-Werts für SO kann sich negativ auf den Durchsatz auswirken. 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 jedoch keine Auswirkungen, wenn die Aushandlung bereits abgeschlossen wurde. Das Festlegen auf den Lauschendocket (Server) hat keine Auswirkungen.
Die Datenmenge, die eine Anwendung in einem einzelnen Socketaufruf senden oder empfangen kann, wird von der MTU nicht beeinflusst. DIE MTU wirkt sich nur darauf aus, wie der zugrunde liegende Windows Sockets-Dienstanbieter Pakete für den Transport segmentiert. Sowohl die vorgeschlagene MTU als auch die letztlich ausgehandelte MTU müssen zwischen RFCOMM _ MIN _ MTU und RFCOMM _ MAX _ MTU erfolgen, wie in der Headerdatei Ws2bth.h 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 Socketoption SO _ BTH _ MTU _ MAX ist eine erweiterte Option, die hauptsächlich für die Validierung verwendet wird. Mit der Socketoption SO _ BTH _ MTU _ MAX wird die maximale RFCOMM-MTU (maximale Übertragungseinheit) für die Verbindungsaushandlung festgelegt. Verbindungen mit einer RFCOMM-MTU, die gleich oder größer als dieser Wert ist, schlagen während des / Verbindungsannahmeprozesses fehl. Das Festlegen dieser Socketoption ist zwar für einen verbundenen Socket zulässig, hat aber keine Auswirkungen, wenn die Aushandlung abgeschlossen ist. Wenn Sie diese Socketoption für einen lauschenden Socket festlegen, wird der Wert für alle eingehenden Verbindungen weitergegeben. Der MAX MTU-Wert muss zwischen RFCOMM _ MIN _ MTU und RFCOMM _ MAX _ MTU erfolgen, wie in der Headerdatei Ws2bth.h definiert.
Für die Socketoption SO _ BTH _ MTU _ MAX 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. Mit der So _ BTH _ MTU _ MIN-Socketoption wird die minimale RFCOMM-MTU (maximale Übertragungseinheit) für die Verbindungsaushandlung festgelegt. Verbindungen mit einer RFCOMM-MTU, die kleiner als dieser Wert ist, schlagen während des / Verbindungsannahmevorgangs fehl. Das Festlegen dieser Socketoption ist zwar für einen verbundenen Socket zulässig, hat aber keine Auswirkungen, wenn die Aushandlung abgeschlossen ist. Wenn Sie diese Socketoption für einen lauschenden Socket festlegen, wird der Wert für alle eingehenden Verbindungen weitergegeben.
Nur ein Lauschendocket kann die MTU nach unten überarbeiten. Wenn der vom verbindenden Socket vorgeschlagene Wert daher kleiner als der für SO _ BTH _ MTU _ MIN auf dem lauschenden Socket festgelegte Wert ist, wird die Verbindung verweigert. Die minimale MTU muss zwischen RFCOMM _ MIN _ MTU und RFCOMM _ MAX _ MTU erfolgen, wie in der Headerdatei Ws2bth.h definiert.
Für die _ SO BTH _ MTU _ MIN-Socketoption ist optval ein Zeiger auf ULONG min _ mtu. optlen entspricht "sizeof(ULONG)".