QBluetoothServer Class

QBluetoothServer クラスは、RFCOMM または L2cap プロトコルを使用して Bluetooth デバイスと通信します。詳細...

Header: #include <QBluetoothServer>
qmake: QT += bluetooth
Inherits: QObject

パブリック型

enum Error { NoError, UnknownError, PoweredOffError, InputOutputError, ServiceAlreadyRegisteredError, …, MissingPermissionsError }

パブリック関数

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)

シグナル

(since 6.2) void errorOccurred(QBluetoothServer::Error error)
void newConnection()

詳細説明

QBluetoothServer は、RFCOMM または L2cap 上で Bluetooth サービスを実装するために使用されます。

listen() で着信接続のリッスンを開始する。新しい接続が確立されるとnewConnection() シグナルが発せられるまで待ち、nextPendingConnection() を呼び出して新しい接続用のQBluetoothSocket を取得します。

他のデバイスがあなたのサービスを見つけられるようにするには、あなたのサービスに該当する属性を持つQBluetoothServiceInfo を作成し、QBluetoothServiceInfo::registerService() を使用して登録します。serverPort() を呼び出して、使用されているチャネル番号を取得する。

QBluetoothServiceInfo::Protocol がプラットフォームによってサポートされていない場合、listen() はfalse を返します。例えば、AndroidとWinRTはRFCOMMしかサポートしていません。

iOSでは、プラットフォームがQBluetoothServer関連の機能へのアクセスを許可するAPIを公開していないため、このクラスは使用できません。

QBluetoothServiceInfo およびQBluetoothSocketも参照して ください。

メンバ型ドキュメント

enum QBluetoothServer::Error

この列挙型は、Bluetooth サーバーのエラータイプを記述します。

定数説明
QBluetoothServer::NoError0エラーなし。
QBluetoothServer::UnknownError1不明なエラーが発生しました。
QBluetoothServer::PoweredOffError2Bluetoothアダプタの電源が切れています。
QBluetoothServer::InputOutputError3入力出力エラーが発生しました。
QBluetoothServer::ServiceAlreadyRegisteredError4サービスまたはポートがすでに登録されています。
QBluetoothServer::UnsupportedProtocolError5Protocol はこのプラットフォームではサポートされていません。
QBluetoothServer::MissingPermissionsError (since Qt 6.4)6オペレーティングシステムが、ユーザーによって許可されていないパーミッションを要求した。

メンバー関数ドキュメント

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

parentserverType でブルートゥースサーバーを構築します。

[virtual noexcept] QBluetoothServer::~QBluetoothServer()

ブルートゥースサーバーを破棄します。

void QBluetoothServer::close()

リスニングソケットを閉じてリセットする。すでに確立されているQBluetoothSocket は引き続き動作し、別途closed を指定する必要がある。

QBluetoothServer::Error QBluetoothServer::error() const

QBluetoothServer の最後のエラーを返します。

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

このシグナルはerror が発生したときに発せられます。

この関数は Qt 6.2 で導入されました。

error() およびQBluetoothServer::Errorも参照してください

bool QBluetoothServer::hasPendingConnections() const

接続が保留中の場合はtrueを返し、そうでない場合はfalseを返します。

bool QBluetoothServer::isListening() const

サーバーが着信接続をリッスンしている場合はtrueを返し、そうでない場合はfalseを返します。

bool QBluetoothServer::listen(const QBluetoothAddress &address = QBluetoothAddress(), quint16 port = 0)

portaddress への着信接続のリッスンを開始します。address はローカルの Bluetooth アダプタ・アドレスでなければならず、port は 0 より大きく、他の Bluetooth サーバ・オブジェクトにすでに取られていてはいけません。システムが自動的にポートを選択できるように、ポート番号を設定しないことをお勧めします。

操作が成功し、サーバーが着信接続をリッスンしている場合はtrue を返し、そうでない場合はfalse を返します。

サーバ・オブジェクトがすでに着信接続をリッスンしている場合、この関数は常にfalse を返します。この関数を呼び出す前にclose() を呼び出す必要があります。

isListening() およびnewConnection()も参照

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

uuid およびserviceName を使用して SPP サービスを登録するための便利な関数です。この関数はすでにサービスを登録しているため、返される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() も参照

[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 2.1デバイスを使用する場合、Bluetoothリンクは常に暗号化されます。

Androidは2つのセキュリティ・レベル(セキュアと非セキュア)のみをサポートしています。このフラグがQBluetooth::Security::NoSecurity に設定されている場合、サーバー・オブジェクトは認証や暗号化を行いません。その他のセキュリティ・フラグの組み合わせは、セキュアなBluetooth接続をトリガーします。

macOSでは、セキュリティ・フラグはサポートされておらず、無視されます。

securityFlags()も参照してください

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。