Auf dieser Seite

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.

KonstanteWertBeschreibung
QBluetoothServer::NoError0Kein Fehler.
QBluetoothServer::UnknownError1Es ist ein unbekannter Fehler aufgetreten.
QBluetoothServer::PoweredOffError2Der Bluetooth-Adapter ist ausgeschaltet.
QBluetoothServer::InputOutputError3Es ist ein Ein-/Ausgabefehler aufgetreten.
QBluetoothServer::ServiceAlreadyRegisteredError4Der Dienst oder Port war bereits registriert.
QBluetoothServer::UnsupportedProtocolError5Protocol wird auf dieser Plattform nicht unterstützt.
QBluetoothServer::MissingPermissionsError (since Qt 6.4)6Das 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:

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.