QBluetoothServer Class

Die Klasse QBluetoothServer verwendet das RFCOMM- oder L2cap-Protokoll zur Kommunikation mit einem Bluetooth-Gerät. Mehr...

Header: #include <QBluetoothServer>
qmake: QT += bluetooth
Inherits: 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()

Detaillierte Beschreibung

QBluetoothServer wird verwendet, um Bluetooth-Dienste über RFCOMM oder L2cap zu implementieren.

Starten Sie das Abhören auf eingehende Verbindungen mit listen(). Warten Sie, bis das Signal newConnection() ausgegeben wird, wenn eine neue Verbindung hergestellt wird, und rufen Sie nextPendingConnection() auf, um ein QBluetoothSocket für die neue Verbindung zu erhalten.

Damit andere Geräte Ihren Dienst finden können, erstellen Sie ein QBluetoothServiceInfo mit den entsprechenden Attributen für Ihren Dienst und registrieren es mit QBluetoothServiceInfo::registerService(). Rufen Sie serverPort() auf, um die verwendete Kanalnummer zu erhalten.

Wenn die QBluetoothServiceInfo::Protocol von einer Plattform nicht unterstützt wird, gibt listen() false zurück. Android und WinRT unterstützen zum Beispiel nur RFCOMM.

Unter iOS kann diese Klasse nicht verwendet werden, da die Plattform keine API bereitstellt, die den Zugriff auf QBluetoothServer-bezogene Funktionen ermöglicht.

Siehe auch QBluetoothServiceInfo und QBluetoothSocket.

Dokumentation der Mitgliedstypen

enum QBluetoothServer::Error

Diese Aufzählung beschreibt die Fehlertypen des Bluetooth-Servers.

KonstanteWertBeschreibung
QBluetoothServer::NoError0Kein Fehler.
QBluetoothServer::UnknownError1Ein unbekannter Fehler ist aufgetreten.
QBluetoothServer::PoweredOffError2Der Bluetooth-Adapter ist ausgeschaltet.
QBluetoothServer::InputOutputError3Ein Eingabe-Ausgabe-Fehler ist aufgetreten.
QBluetoothServer::ServiceAlreadyRegisteredError4Der Dienst oder Anschluss wurde bereits registriert.
QBluetoothServer::UnsupportedProtocolError5Die Protocol wird auf dieser Plattform nicht unterstützt.
QBluetoothServer::MissingPermissionsError (since Qt 6.4)6Das Betriebssystem fordert Berechtigungen an, die vom Benutzer nicht gewährt wurden.

Dokumentation der Mitgliedsfunktionen

[explicit] QBluetoothServer::QBluetoothServer(QBluetoothServiceInfo::Protocol serverType, QObject *parent = nullptr)

Konstruiert einen Bluetooth-Server mit parent und serverType.

[virtual noexcept] QBluetoothServer::~QBluetoothServer()

Zerstört den Bluetooth-Server.

void QBluetoothServer::close()

Schließt und setzt den abhörenden Socket zurück. Ein bereits eingerichtetes QBluetoothSocket arbeitet weiter und muss separat closed werden.

QBluetoothServer::Error QBluetoothServer::error() const

Gibt den letzten Fehler der QBluetoothServer zurück.

[signal, since 6.2] void QBluetoothServer::errorOccurred(QBluetoothServer::Error error)

Dieses Signal wird ausgegeben, 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 anhängig ist, 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)

Warten Sie auf eingehende Verbindungen zu address auf port. address muss eine lokale Bluetooth-Adapteradresse sein und port muss größer als Null sein und darf nicht bereits von einem anderen Bluetooth-Serverobjekt belegt sein. Es wird empfohlen, die Angabe einer Portnummer zu vermeiden, 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 false.

Wenn das Serverobjekt bereits auf eingehende Verbindungen wartet, gibt diese Funktion immer false zurück. close() sollte vor dem Aufruf dieser Funktion aufgerufen werden.

Siehe auch isListening() und newConnection().

QBluetoothServiceInfo QBluetoothServer::listen(const QBluetoothUuid &uuid, const QString &serviceName = QString())

Convenience-Funktion zur Registrierung eines SPP-Dienstes mit 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 abzuschalten, müssen Sie QBluetoothServiceInfo::unregisterService() und close() auf diesem Serverobjekt aufrufen.

Gibt im Erfolgsfall eine registrierte QBluetoothServiceInfo -Instanz zurück, andernfalls eine ungültige QBluetoothServiceInfo. Diese Funktion geht immer davon aus, dass der Standard-Bluetooth-Adapter verwendet werden soll.

Wenn das Server-Objekt bereits auf eingehende Verbindungen wartet, gibt diese Funktion ein ungültiges QBluetoothServiceInfo zurück.

Für einen RFCOMM-Server entspricht diese Funktion dem folgenden Codeschnipsel.

    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 anstehenden Verbindungen zurück.

Siehe auch setMaxPendingConnections().

[signal] void QBluetoothServer::newConnection()

Dieses Signal wird ausgesendet, wenn eine neue Verbindung verfügbar ist.

Der verbundene Slot sollte nextPendingConnection() aufrufen, um ein QBluetoothSocket Objekt zu erhalten, um Daten über die Verbindung zu senden und zu empfangen.

Siehe auch nextPendingConnection() und hasPendingConnections().

QBluetoothSocket *QBluetoothServer::nextPendingConnection()

Gibt einen Zeiger auf die Adresse QBluetoothSocket für die nächste anstehende 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)

Setzt die maximale Anzahl der anstehenden Verbindungen auf numConnections. Wenn die Anzahl der anstehenden Sockets diese Grenze überschreitet, werden neue Sockets abgewiesen.

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. Die Bluetooth-Verbindung wird immer verschlüsselt, wenn Bluetooth 2.1-Geräte verwendet werden, da Verschlüsselung obligatorisch ist.

Android unterstützt nur zwei Sicherheitsstufen (sicher und nicht-sicher). Wenn dieses Flag auf QBluetooth::Security::NoSecurity gesetzt ist, verwendet das Serverobjekt keine Authentifizierung oder Verschlüsselung. Jede andere Kombination von Sicherheitsmerkmalen löst eine sichere Bluetooth-Verbindung aus.

Unter macOS werden die Sicherheitsflags nicht unterstützt und werden ignoriert.

Siehe auch securityFlags().

© 2025 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.