Класс QBluetoothServer
Класс QBluetoothServer использует протокол RFCOMM или L2cap для связи с устройством Bluetooth. Подробнее...
| Заголовок: | #include <QBluetoothServer> |
| qmake: | QT += bluetooth |
| С версии: | Qt 5.2 |
| Наследует от: | QObject |
Открытые типы
| Перечисление | Ошибка { НетОшибки, НеизвестнаяОшибка, ОшибкаОтключенияПитания, ОшибкаВводаВывода, ОшибкаУжеЗарегистрированнойСлужбы, ОшибкаНеподдерживаемогоПротокола } |
Открытые функции
| QBluetoothServer(QBluetoothServiceInfo::Protocol serverType, QObject *parent = Q_NULLPTR) | |
| ~QBluetoothServer() | |
| void | закрыть() |
| Ошибка | ошибка() 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) |
- 31 открытая функция унаследована от QObject
Сигналы
| void | ошибка(QBluetoothServer::Ошибка error) |
| void | новоеПодключение() |
- 2 сигнала унаследованы от QObject
Дополнительные унаследованные члены
- 1 свойство унаследовано от QObject
- 1 открытый слот унаследован от QObject
- 11 статических открытых членов унаследованы от QObject
- 9 защищенных функций унаследованы от QObject
Подробное описание
Класс QBluetoothServer использует протокол RFCOMM или L2cap для связи с устройством Bluetooth.
QBluetoothServer используется для реализации служб Bluetooth через RFCOMM или L2cap.
Начните прослушивание входящих подключений с помощью начатьПрослушивание(). Дождитесь, пока не будет выпущен сигнал новоеПодключение() при установлении нового подключения, и вызовите следующееОжидающееПодключение() для получения QBluetoothSocket для нового подключения.
Чтобы другие устройства могли найти вашу службу, создайте QBluetoothServiceInfo с соответствующими атрибутами для вашей службы и зарегистрируйте ее с помощью QBluetoothServiceInfo::registerService(). Вызовите портСервера() для получения номера канала, который используется.
Если QBluetoothServiceInfo::Protocol не поддерживается платформой, начатьПрослушивание() вернёт false.
См. также 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 = Q_NULLPTR)
Конструирует сервер Bluetooth с parent и serverType.
QBluetoothServer::~QBluetoothServer()
Уничтожает сервер Bluetooth.
void QBluetoothServer::закрыть()
Закрывает и сбрасывает сокет прослушивания. Любое уже установленное соединение QBluetoothSocket продолжает работу и должно быть отдельно закрыто.
Ошибка QBluetoothServer::ошибка() const
Возвращает последнюю ошибку сервера QBluetoothServer.
[signal] void QBluetoothServer::ошибка(QBluetoothServer::Ошибка error)
Этот сигнал вызывается при возникновении ошибки.
Примечание: Сигнал ошибка перегружен в этом классе. Чтобы подключиться к нему с помощью синтаксиса указателя на функцию, вы должны указать тип сигнала в статическом преобразовании, как показано в этом примере:
connect(bluetoothServer, static_cast<void(QBluetoothServer::*)(QBluetoothServer::Error)>(&QBluetoothServer::error),
[=](QBluetoothServer::Error error){ /* ... */ }); См. также ошибка() и 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::PublicBrowseGroup));
serviceInfo.setAttribute(QBluetoothServiceInfo::BrowseGroupList,
browseSequence);
QBluetoothServiceInfo::Sequence classId;
classId << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::SerialPort));
serviceInfo.setAttribute(QBluetoothServiceInfo::BluetoothProfileDescriptorList,
classId);
//Android requires custom uuid to be set as service class
classId.prepend(QVariant::fromValue(uuid));
serviceInfo.setAttribute(QBluetoothServiceInfo::ServiceClassIds, classId);
serviceInfo.setServiceUuid(uuid);
QBluetoothServiceInfo::Sequence protocolDescriptorList;
QBluetoothServiceInfo::Sequence protocol;
protocol << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::L2cap));
if (d->serverType == QBluetoothServiceInfo::L2capProtocol)
protocol << QVariant::fromValue(serverPort());
protocolDescriptorList.append(QVariant::fromValue(protocol));
protocol.clear();
protocol << QVariant::fromValue(QBluetoothUuid(QBluetoothUuid::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().
[signal] void QBluetoothServer::newConnection()
Этот сигнал испускается при наличии нового подключения.
Обработчик подключений должен вызвать nextPendingConnection() для получения объекта QBluetoothSocket, чтобы отправлять и получать данные по подключению.
См. также nextPendingConnection() и hasPendingConnections().
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::NoSecurity, объект сервера не будет использовать никакой аутентификации или шифрования. Любая другая комбинация флагов безопасности вызовет защищённое соединение Bluetooth.
В macOS флаги безопасности не поддерживаются и будут игнорироваться.
См. также securityFlags().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qbluetoothserver.html