QBluetoothServer Class
Die Klasse „QBluetoothServer“ nutzt das RFCOMM- oder L2cap-Protokoll zur Kommunikation mit einem Bluetooth-Gerät. Mehr...
| Header: | #include <QBluetoothServer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Bluetooth) target_link_libraries(mytarget PRIVATE Qt6::Bluetooth) |
| qmake: | QT += bluetooth |
| Erbt von: | QObject |
Öffentliche Typen
| enum | Error { NoError, UnknownError, PoweredOffError, InputOutputError, ServiceAlreadyRegisteredError, …, MissingPermissionsError } |
Öffentliche Funktionen
| QBluetoothServer(QBluetoothServiceInfo::Protocol serverType, QObject *parent = nullptr) | |
| virtual | ~QBluetoothServer() |
| void | close() |
| QBluetoothServer::Error | error() const |
| bool | hasPendingConnections() const |
| bool | isListening() const |
| bool | listen(const QBluetoothAddress &address = QBluetoothAddress(), quint16 port = 0) |
| QBluetoothServiceInfo | listen(const QBluetoothUuid &uuid, const QString &serviceName = QString()) |
| int | maxPendingConnections() const |
| QBluetoothSocket * | nextPendingConnection() |
| QBluetooth::SecurityFlags | securityFlags() const |
| QBluetoothAddress | serverAddress() const |
| quint16 | serverPort() const |
| QBluetoothServiceInfo::Protocol | serverType() const |
| void | setMaxPendingConnections(int numConnections) |
| void | setSecurityFlags(QBluetooth::SecurityFlags security) |
Signale
(since 6.2) void | errorOccurred(QBluetoothServer::Error error) |
| void | newConnection() |
Ausführliche Beschreibung
QBluetoothServer wird zur Implementierung von Bluetooth-Diensten über RFCOMM oder L2cap verwendet.
Beginnen Sie mit dem Abhören auf eingehende Verbindungen mit ` listen()`. Warten Sie, bis das Signal ` newConnection()` ausgelöst wird, wenn eine neue Verbindung hergestellt wird, und rufen Sie ` nextPendingConnection()` auf, um eine ` QBluetoothSocket ` für die neue Verbindung zu erhalten.
Damit andere Geräte Ihren Dienst finden können, erstellen Sie einen ` QBluetoothServiceInfo ` mit den für Ihren Dienst geltenden Attributen und registrieren Sie ihn mit ` QBluetoothServiceInfo::registerService()`. Rufen Sie ` serverPort()` auf, um die verwendete Kanalnummer abzurufen.
Wenn die „ QBluetoothServiceInfo::Protocol “ von einer Plattform nicht unterstützt wird, gibt „ listen()“ „ false “ zurück. Android und WinRT unterstützen beispielsweise nur RFCOMM.
Unter iOS kann diese Klasse nicht verwendet werden, da die Plattform keine API bereitstellt, die den Zugriff auf Funktionen im Zusammenhang mit dem „QBluetoothServer“ ermöglichen würde.
Siehe auch „ QBluetoothServiceInfo “ und „ QBluetoothSocket “.
Dokumentation zu Mitgliedstypen
enum QBluetoothServer::Error
Diese Enumeration beschreibt Fehlerarten des Bluetooth-Servers.
| Konstante | Wert | Beschreibung |
|---|---|---|
QBluetoothServer::NoError | 0 | Kein Fehler. |
QBluetoothServer::UnknownError | 1 | Es ist ein unbekannter Fehler aufgetreten. |
QBluetoothServer::PoweredOffError | 2 | Der Bluetooth-Adapter ist ausgeschaltet. |
QBluetoothServer::InputOutputError | 3 | Es ist ein Ein-/Ausgabefehler aufgetreten. |
QBluetoothServer::ServiceAlreadyRegisteredError | 4 | Der Dienst oder Port war bereits registriert. |
QBluetoothServer::UnsupportedProtocolError | 5 | Protocol wird auf dieser Plattform nicht unterstützt. |
QBluetoothServer::MissingPermissionsError (since Qt 6.4) | 6 | Das Betriebssystem fordert Berechtigungen an, die vom Benutzer nicht erteilt wurden. |
Dokumentation der Member-Funktionen
[explicit] QBluetoothServer::QBluetoothServer(QBluetoothServiceInfo::Protocol serverType, QObject *parent = nullptr)
Erstellt einen Bluetooth-Server mit den Adressen parent und serverType.
[virtual noexcept] QBluetoothServer::~QBluetoothServer()
Beendet den Bluetooth-Server.
void QBluetoothServer::close()
Schließt den Listening-Socket und setzt ihn zurück. Bereits hergestellte Verbindungen ( QBluetoothSocket ) bleiben bestehen und müssen separat beendet werden ( closed).
QBluetoothServer::Error QBluetoothServer::error() const
Gibt den letzten Fehler des „ QBluetoothServer “ zurück.
[signal, since 6.2] void QBluetoothServer::errorOccurred(QBluetoothServer::Error error)
Dieses Signal wird ausgelöst, wenn ein „ error “ auftritt.
Diese Funktion wurde in Qt 6.2 eingeführt.
Siehe auch „ error()“ und „ QBluetoothServer::Error “.
bool QBluetoothServer::hasPendingConnections() const
Gibt „true“ zurück, wenn eine Verbindung aussteht, andernfalls „false“.
bool QBluetoothServer::isListening() const
Gibt „true“ zurück, wenn der Server auf eingehende Verbindungen wartet, andernfalls „false“.
bool QBluetoothServer::listen(const QBluetoothAddress &address = QBluetoothAddress(), quint16 port = 0)
Beginnt, auf eingehende Verbindungen zu address unter port zu warten. address muss die Adresse eines lokalen Bluetooth-Adapters sein, und port muss größer als Null sein und darf nicht bereits von einem anderen Bluetooth-Serverobjekt belegt sein. Es wird empfohlen, keine Portnummer festzulegen, damit das System automatisch einen Port auswählen kann.
Gibt „ true “ zurück, wenn der Vorgang erfolgreich war und der Server auf eingehende Verbindungen wartet; andernfalls wird „ false “ zurückgegeben.
Wenn das Serverobjekt bereits auf eingehende Verbindungen wartet, gibt diese Funktion immer „ false “ zurück. Vor dem Aufruf dieser Funktion sollte „ close()“ aufgerufen werden.
Siehe auch isListening() und newConnection().
QBluetoothServiceInfo QBluetoothServer::listen(const QBluetoothUuid &uuid, const QString &serviceName = QString())
Hilfsfunktion zur Registrierung eines SPP-Dienstes bei uuid und serviceName. Da diese Funktion den Dienst bereits registriert, kann das zurückgegebene QBluetoothServiceInfo -Objekt nicht mehr geändert werden. Um den Server später herunterzufahren, müssen die Methoden QBluetoothServiceInfo::unregisterService() und close() für dieses Serverobjekt aufgerufen werden.
Gibt bei Erfolg eine registrierte ` QBluetoothServiceInfo `-Instanz zurück, andernfalls einen ungültigen ` QBluetoothServiceInfo`. Diese Funktion geht immer davon aus, dass der Standard-Bluetooth-Adapter verwendet werden soll.
Wenn das Serverobjekt bereits auf eingehende Verbindungen wartet, gibt diese Funktion eine ungültige ` QBluetoothServiceInfo` zurück.
Für einen RFCOMM-Server entspricht diese Funktion dem folgenden Codeausschnitt.
QBluetoothServiceInfo serviceInfo;
serviceInfo.setAttribute(QBluetoothServiceInfo::ServiceName, serviceName);
QBluetoothServiceInfo::Sequence browseSequence;
browseSequence << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::ServiceClassUuid::PublicBrowseGroup));
serviceInfo.setAttribute(QBluetoothServiceInfo::BrowseGroupList,
browseSequence);
QBluetoothServiceInfo::Sequence profileSequence;
QBluetoothServiceInfo::Sequence classId;
classId << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::ServiceClassUuid::SerialPort));
classId << QVariant::fromValue(quint16(0x100));
profileSequence.append(QVariant::fromValue(classId));
serviceInfo.setAttribute(QBluetoothServiceInfo::BluetoothProfileDescriptorList,
profileSequence);
classId.clear();
//Android requires custom uuid to be set as service class
classId << QVariant::fromValue(uuid);
classId << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::ServiceClassUuid::SerialPort));
serviceInfo.setAttribute(QBluetoothServiceInfo::ServiceClassIds, classId);
serviceInfo.setServiceUuid(uuid);
QBluetoothServiceInfo::Sequence protocolDescriptorList;
QBluetoothServiceInfo::Sequence protocol;
protocol << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::ProtocolUuid::L2cap));
if (d->serverType == QBluetoothServiceInfo::L2capProtocol)
protocol << QVariant::fromValue(serverPort());
protocolDescriptorList.append(QVariant::fromValue(protocol));
protocol.clear();
protocol << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::ProtocolUuid::Rfcomm))
<< QVariant::fromValue(quint8(serverPort()));
protocolDescriptorList.append(QVariant::fromValue(protocol));
serviceInfo.setAttribute(QBluetoothServiceInfo::ProtocolDescriptorList,
protocolDescriptorList);
bool result = serviceInfo.registerService();Siehe auch ` isListening()`, ` newConnection()` und ` listen()`.
int QBluetoothServer::maxPendingConnections() const
Gibt die maximale Anzahl der ausstehenden Verbindungen zurück.
Siehe auch ` setMaxPendingConnections()`.
[signal] void QBluetoothServer::newConnection()
Dieses Signal wird ausgelöst, wenn eine neue Verbindung verfügbar ist.
Der verbundene Slot sollte ` nextPendingConnection()` aufrufen, um ein ` QBluetoothSocket `-Objekt zu erhalten, mit dem Daten über die Verbindung gesendet und empfangen werden können.
Siehe auch ` nextPendingConnection()` und ` hasPendingConnections()`.
QBluetoothSocket *QBluetoothServer::nextPendingConnection()
Gibt einen Zeiger auf die „ QBluetoothSocket “ für die nächste ausstehende Verbindung zurück. Es liegt in der Verantwortung des Aufrufers, den Zeiger zu löschen.
QBluetooth::SecurityFlags QBluetoothServer::securityFlags() const
Gibt die Bluetooth-Sicherheitsflags zurück.
Siehe auch „ setSecurityFlags()“.
QBluetoothAddress QBluetoothServer::serverAddress() const
Gibt die Serveradresse zurück.
quint16 QBluetoothServer::serverPort() const
Gibt die Portnummer des Servers zurück.
QBluetoothServiceInfo::Protocol QBluetoothServer::serverType() const
Gibt den Typ des ` QBluetoothServer` zurück.
void QBluetoothServer::setMaxPendingConnections(int numConnections)
Legt die maximale Anzahl ausstehender Verbindungen auf numConnections fest. Wenn die Anzahl der ausstehenden Sockets diese Grenze überschreitet, werden neue Sockets abgelehnt.
Siehe auch maxPendingConnections().
void QBluetoothServer::setSecurityFlags(QBluetooth::SecurityFlags security)
Setzt die Bluetooth-Sicherheitsflags auf „ security “. Diese Funktion muss vor dem Aufruf von „ listen()“ aufgerufen werden. Bei der Verwendung von Bluetooth-2.1-Geräten wird die Bluetooth-Verbindung stets verschlüsselt, da eine Verschlüsselung zwingend vorgeschrieben ist.
Auf dem Linux-BlueZ-Backend werden die Flags den Kernel-Sicherheitsstufen zugeordnet:
- QBluetooth::Security::Authorization entspricht „
BT_SECURITY_LOW“; - QBluetooth::Security::Encryption entspricht „
BT_SECURITY_MEDIUM“; - QBluetooth::Security::Secure entspricht „
BT_SECURITY_HIGH“; - QBluetooth::Security::Authentication wird vom Kernel nicht verwendet und ignoriert.
Der Standardwert ist „ QBluetooth::Security::Authorization “.
Android unterstützt nur zwei Sicherheitsstufen („secure“ und „non-secure“). Wenn dieses Flag auf „ QBluetooth::Security::NoSecurity “ gesetzt ist, führt das Serverobjekt keine Authentifizierung oder Verschlüsselung durch. Jede andere Kombination von Sicherheitsflags löst eine sichere Bluetooth-Verbindung aus.
Unter macOS und Windows werden Sicherheitsflags nicht unterstützt und werden ignoriert.
Siehe auch ` securityFlags()`.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.