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.
Konstante | Wert | Beschreibung |
---|---|---|
QBluetoothServer::NoError | 0 | Kein Fehler. |
QBluetoothServer::UnknownError | 1 | Ein unbekannter Fehler ist aufgetreten. |
QBluetoothServer::PoweredOffError | 2 | Der Bluetooth-Adapter ist ausgeschaltet. |
QBluetoothServer::InputOutputError | 3 | Ein Eingabe-Ausgabe-Fehler ist aufgetreten. |
QBluetoothServer::ServiceAlreadyRegisteredError | 4 | Der Dienst oder Anschluss wurde bereits registriert. |
QBluetoothServer::UnsupportedProtocolError | 5 | Die Protocol wird auf dieser Plattform nicht unterstützt. |
QBluetoothServer::MissingPermissionsError (since Qt 6.4) | 6 | Das 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.