Spec-Zone.ru › Qt

Класс 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API