Класс QBluetoothServer
Класс QBluetoothServer использует протоколы RFCOMM или L2cap для связи с Bluetooth-устройством. Подробнее...
| Заголовок: | #include <QBluetoothServer> |
| qmake: | QT += bluetooth |
| С момента: | Qt 5.2 |
| Наследуется от: | QObject |
Открытые типы
| перечисление | Ошибка { НетОшибки, НеизвестнаяОшибка, ОшибкаВыключенияПитания, ОшибкаВводаВывода, ОшибкаУжеЗарегистрированнойУслуги, ОшибкаНеподдерживаемогоПротокола } |
Открытые функции
| QBluetoothServer(QBluetoothServiceInfo::Protocol serverType, QObject *parent = nullptr) | |
| виртуальный | ~QBluetoothServer() |
| void | закрыть() |
| QBluetoothServer::Ошибка | ошибка() const |
| bool | естьОжидающиеПодключения() const |
| bool | слушает() const |
| bool | начатьПрослушивание(const QBluetoothAddress &address = QBluetoothAddress(), quint16 port = 0) |
| QBluetoothServiceInfo | начатьПрослушивание(const QBluetoothUuid &uuid, const QString &serviceName = QString()) |
| int | максОжидаемыхПодключений() const |
| QBluetoothSocket * | следующееОжидающееПодключение() |
| QBluetooth::SecurityFlags | флагиЗащиты() const |
| QBluetoothAddress | адресСервера() const |
| quint16 | портСервера() const |
| QBluetoothServiceInfo::Protocol | типСервера() const |
| void | установитьМаксОжидаемыхПодключений(int numConnections) |
| void | установитьФлагиЗащиты(QBluetooth::SecurityFlags security) |
Сигналы
| void | произошлаОшибка(QBluetoothServer::Ошибка error) |
| void | новоеПодключение() |
Подробное описание
QBluetoothServer используется для реализации Bluetooth-услуг через RFCOMM или L2cap.
Начните прослушивание входящих подключений с начатьПрослушивание(). Дождитесь, пока не будет отправлен сигнал новоеПодключение() при установлении нового подключения, и вызовите следующееОжидающееПодключение() для получения QBluetoothSocket для нового подключения.
Чтобы позволить другим устройствам найти вашу службу, создайте QBluetoothServiceInfo с соответствующими атрибутами для вашей службы и зарегистрируйте её, используя QBluetoothServiceInfo::registerService(). Вызовите портСервера() для получения номера канала, который используется.
Если QBluetoothServiceInfo::Protocol не поддерживается платформой, начатьПрослушивание() вернёт false. Например, Android и WinRT поддерживают только RFCOMM.
В iOS этот класс нельзя использовать, так как платформа не предоставляет API, которое может позволить доступ к функциям, связанным с QBluetoothServer.
См. также QBluetoothServiceInfo и QBluetoothSocket.
Документация по типам членов
перечисление QBluetoothServer::Ошибка
Это перечисление описывает типы ошибок Bluetooth-сервера.
| Константа | Значение | Описание |
|---|---|---|
QBluetoothServer::NoError |
0 |
Нет ошибки. |
QBluetoothServer::UnknownError |
1 |
Произошла неизвестная ошибка. |
QBluetoothServer::PoweredOffError |
2 |
Bluetooth-адаптер выключен. |
QBluetoothServer::InputOutputError |
3 |
Произошла ошибка ввода-вывода. |
QBluetoothServer::ServiceAlreadyRegisteredError |
4 |
Услуга или порт уже были зарегистрированы. |
QBluetoothServer::UnsupportedProtocolError |
5 |
Протокол Protocol не поддерживается на данной платформе. |
Документация по документации функций членов
QBluetoothServer::QBluetoothServer(QBluetoothServiceInfo::Protocol serverType, QObject *parent = nullptr)
Конструирует Bluetooth-сервер с parent и serverType.
[signal, since 6.2] void QBluetoothServer::произошлаОшибка(QBluetoothServer::Ошибка error)
Этот сигнал испускается при возникновении error.
Эта функция была добавлена в Qt 6.2.
См. также ошибка() и QBluetoothServer::Ошибка.
[signal] void QBluetoothServer::новоеПодключение()
Этот сигнал испускается, когда доступно новое подключение.
Обрабатывающий слот должен вызвать следующееОжидающееПодключение() для получения объекта QBluetoothSocket для отправки и получения данных по подключению.
См. также следующееОжидающееПодключение() и естьОжидающиеПодключения().
[virtual] QBluetoothServer::~QBluetoothServer()
Уничтожает Bluetooth-сервер.
void QBluetoothServer::закрыть()
Закрывает и сбрасывает сокет прослушивания. Любые уже установленные QBluetoothSocket продолжают работать и должны быть закрыты отдельно.
QBluetoothServer::Ошибка QBluetoothServer::ошибка() const
Возвращает последнюю ошибку QBluetoothServer.
bool QBluetoothServer::естьОжидающиеПодключения() const
Возвращает true, если ожидается подключение, в противном случае false.
bool QBluetoothServer::слушает() const
Возвращает true, если сервер прослушивает входящие подключения, в противном случае false.
bool QBluetoothServer::начатьПрослушивание(const QBluetoothAddress &address = QBluetoothAddress(), quint16 port = 0)
Начните прослушивать входящие подключения к address на port. address должен быть адресом локального Bluetooth-адаптера, а port должен быть больше нуля и не быть уже занятым другим объектом Bluetooth-сервера. Рекомендуется не устанавливать номер порта, чтобы система могла автоматически выбрать порт.
Возвращает true если операция выполнена успешно и сервер прослушивает входящие подключения, в противном случае возвращает false.
Если объект сервера уже прослушивает входящие подключения, эта функция всегда возвращает false. Необходимо вызвать close() перед вызовом этой функции.
См. также isListening() и newConnection().
QBluetoothServiceInfo QBluetoothServer::listen(const QBluetoothUuid &uuid, const QString &serviceName = QString())
Функция для регистрации службы SPP с uuid и serviceName. Поскольку эта функция уже регистрирует службу, объект QBluetoothServiceInfo, который возвращается, больше нельзя изменить. Для остановки сервера необходимо вызвать QBluetoothServiceInfo::unregisterService() и close() на этом объекте сервера.
Возвращает зарегистрированный экземпляр QBluetoothServiceInfo при успехе, в противном случае — недействительный QBluetoothServiceInfo. Эта функция всегда предполагает использование адаптера Bluetooth по умолчанию.
Если объект сервера уже прослушивает входящие подключения, эта функция возвращает недействительный QBluetoothServiceInfo.
Для сервера RFCOMM эта функция эквивалентна следующему фрагменту кода.
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(); См. также isListening(), newConnection() и listen().
int QBluetoothServer::maxPendingConnections() const
Возвращает максимальное количество ожидающих подключений.
См. также setMaxPendingConnections().
QBluetoothSocket *QBluetoothServer::nextPendingConnection()
Возвращает указатель на QBluetoothSocket для следующего ожидающего подключения. Указатель должен быть удален вызывающим кодом.
QBluetooth::SecurityFlags QBluetoothServer::securityFlags() const
Возвращает флаги безопасности Bluetooth.
См. также setSecurityFlags().
QBluetoothAddress QBluetoothServer::serverAddress() const
Возвращает адрес сервера.
quint16 QBluetoothServer::serverPort() const
Возвращает номер порта сервера.
QBluetoothServiceInfo::Protocol QBluetoothServer::serverType() const
Возвращает тип QBluetoothServer.
void QBluetoothServer::setMaxPendingConnections(int numConnections)
Устанавливает максимальное количество ожидающих подключений в numConnections. Если количество ожидающих сокетов превышает этот лимит, новые сокеты будут отклонены.
См. также maxPendingConnections().
void QBluetoothServer::setSecurityFlags(QBluetooth::SecurityFlags security)
Устанавливает флаги безопасности Bluetooth на security. Эту функцию необходимо вызвать перед вызовом listen(). Ссылка Bluetooth всегда будет зашифрована при использовании устройств Bluetooth 2.1, так как шифрование является обязательным.
Android поддерживает только два уровня безопасности (безопасный и небезопасный). Если этот флаг установлен в QBluetooth::Security::NoSecurity, объект сервера не будет использовать никакой аутентификации или шифрования. Любая другая комбинация флагов безопасности вызовет безопасное подключение Bluetooth.
В macOS флаги безопасности не поддерживаются и будут проигнорированы.
См. также securityFlags().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qbluetoothserver.html