QLocalSocket Class
QLocalSocketクラスはローカルソケットを提供します。詳細...
Header: | #include <QLocalSocket> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
Inherits: | QIODevice |
パブリックタイプ
enum | LocalSocketError { ConnectionRefusedError, PeerClosedError, ServerNotFoundError, SocketAccessError, SocketResourceError, …, UnknownSocketError } |
enum | LocalSocketState { UnconnectedState, ConnectingState, ConnectedState, ClosingState } |
(since 6.2) enum | SocketOption { NoOptions, AbstractNamespaceOption } |
flags | SocketOptions |
プロパティ
(since 6.2)
socketOptions : SocketOptions
パブリック関数
QLocalSocket(QObject *parent = nullptr) | |
virtual | ~QLocalSocket() |
void | abort() |
QBindable<QLocalSocket::SocketOptions> | bindableSocketOptions() |
void | connectToServer(QIODeviceBase::OpenMode openMode = ReadWrite) |
void | connectToServer(const QString &name, QIODeviceBase::OpenMode openMode = ReadWrite) |
void | disconnectFromServer() |
QLocalSocket::LocalSocketError | error() const |
bool | flush() |
QString | fullServerName() const |
bool | isValid() const |
qint64 | readBufferSize() const |
QString | serverName() const |
void | setReadBufferSize(qint64 size) |
void | setServerName(const QString &name) |
bool | setSocketDescriptor(qintptr socketDescriptor, QLocalSocket::LocalSocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite) |
void | setSocketOptions(QLocalSocket::SocketOptions option) |
qintptr | socketDescriptor() const |
QLocalSocket::SocketOptions | socketOptions() const |
QLocalSocket::LocalSocketState | state() const |
bool | waitForConnected(int msecs = 30000) |
bool | waitForDisconnected(int msecs = 30000) |
再実装パブリック関数
virtual qint64 | bytesAvailable() const override |
virtual qint64 | bytesToWrite() const override |
virtual bool | canReadLine() const override |
virtual void | close() override |
virtual bool | isSequential() const override |
virtual bool | open(QIODeviceBase::OpenMode openMode = ReadWrite) override |
virtual bool | waitForBytesWritten(int msecs = 30000) override |
virtual bool | waitForReadyRead(int msecs = 30000) override |
シグナル
void | connected() |
void | disconnected() |
void | errorOccurred(QLocalSocket::LocalSocketError socketError) |
void | stateChanged(QLocalSocket::LocalSocketState socketState) |
再実装された保護された関数
virtual qint64 | readData(char *data, qint64 c) override |
virtual qint64 | readLineData(char *data, qint64 maxSize) override |
virtual qint64 | skipData(qint64 maxSize) override |
virtual qint64 | writeData(const char *data, qint64 c) override |
詳細説明
Windowsでは名前付きパイプ、Unixではローカルドメインソケット。
エラーが発生した場合、error() はエラーの種類を返し、errorString() を呼び出すことで、何が起こったかを人間が読める形で説明することができる。
QLocalSocketはイベントループと一緒に使用するように設計されていますが、イベントループなしで使用することも可能です。その場合、waitForConnected ()、waitForReadyRead ()、waitForBytesWritten ()、waitForDisconnected ()を使用する必要があります。
QLocalServerも参照のこと 。
メンバ型のドキュメント
enum QLocalSocket::LocalSocketError
LocalServerError 列挙型は、発生する可能性のあるエラーを表す。最新のエラーは、QLocalSocket::error() をコールすることで取得できる。
定数 | 値 | 説明 |
---|---|---|
QLocalSocket::ConnectionRefusedError | QAbstractSocket::ConnectionRefusedError | 接続が相手によって拒否された(またはタイムアウトした)。 |
QLocalSocket::PeerClosedError | QAbstractSocket::RemoteHostClosedError | リモートソケットが接続を切断した。クライアントソケット(つまりこのソケット)は、リモートのクローズ通知送信後にクローズされることに注意。 |
QLocalSocket::ServerNotFoundError | QAbstractSocket::HostNotFoundError | ローカルソケット名が見つからない。 |
QLocalSocket::SocketAccessError | QAbstractSocket::SocketAccessError | アプリケーションに必要な権限がないため、ソケット操作に失敗した。 |
QLocalSocket::SocketResourceError | QAbstractSocket::SocketResourceError | ローカルシステムのリソースが不足した(ソケット数が多すぎるなど)。 |
QLocalSocket::SocketTimeoutError | QAbstractSocket::SocketTimeoutError | ソケット操作がタイムアウトした。 |
QLocalSocket::DatagramTooLargeError | QAbstractSocket::DatagramTooLargeError | データグラムがオペレーティングシステムの制限値(8192バイトなど)より大きかった。 |
QLocalSocket::ConnectionError | QAbstractSocket::NetworkError | 接続でエラーが発生した。 |
QLocalSocket::UnsupportedSocketOperationError | QAbstractSocket::UnsupportedSocketOperationError | 要求されたソケット操作がローカルオペレーティングシステムでサポートされていない。 |
QLocalSocket::OperationError | QAbstractSocket::OperationError | ソケットが許可されていない状態で操作を試みた。 |
QLocalSocket::UnknownSocketError | QAbstractSocket::UnknownSocketError | 不明なエラーが発生した。 |
enum QLocalSocket::LocalSocketState
この列挙型はソケットが取り得る様々な状態を記述する。
定数 | 値 | 説明 |
---|---|---|
QLocalSocket::UnconnectedState | QAbstractSocket::UnconnectedState | ソケットは接続されていない。 |
QLocalSocket::ConnectingState | QAbstractSocket::ConnectingState | ソケットが接続の確立を開始した。 |
QLocalSocket::ConnectedState | QAbstractSocket::ConnectedState | 接続が確立された。 |
QLocalSocket::ClosingState | QAbstractSocket::ClosingState | ソケットが閉じようとしている(データがまだ書き込まれるのを待っているかもしれない)。 |
QLocalSocket::state()も参照 。
[since 6.2]
enum QLocalSocket::SocketOption
flags QLocalSocket::SocketOptions
この列挙型は、サーバーへの接続に使用できるオプションを記述します。現在、LinuxとAndroidでは、抽象アドレスにバインドされたソケットをリッスンしているサーバーへの接続を指定するために使用されます。
定数 | 値 | 説明 |
---|---|---|
QLocalSocket::NoOptions | 0x00 | オプションが設定されていない。 |
QLocalSocket::AbstractNamespaceOption | 0x01 | ソケットは抽象アドレスへの接続を試みる。このフラグは Linux と Android 固有のものである。他のプラットフォームでは無視される。 |
この列挙型は Qt 6.2 で導入されました。
SocketOptions 型はQFlags<SocketOption> の typedef です。SocketOption 値の OR の組み合わせを格納します。
socketOptionsも参照してください 。
プロパティのドキュメント
[bindable, since 6.2]
socketOptions : SocketOptions
注意: このプロパティはQProperty バインディングをサポートしている。
このプロパティはソケットオプションを保持する。
オプションはソケットがUnconnectedState の状態で設定する必要がある。
このプロパティは Qt 6.2 で導入された。
connectToServer()も参照のこと 。
メンバー関数 ドキュメント
QLocalSocket::QLocalSocket(QObject *parent = nullptr)
新しいローカルソケットを作成する。parent 引数はQObject のコンストラクタに渡される。
[virtual noexcept]
QLocalSocket::~QLocalSocket()
ソケットを破棄し、必要に応じて接続を閉じる。
void QLocalSocket::abort()
現在の接続を中止し、ソケットをリセットする。disconnectFromServer() と異なり、この関数はソケットを直ちにクローズし、書き込みバッファ内の保留中のデータをクリアする。
disconnectFromServer() およびclose()も参照のこと 。
[override virtual]
qint64 QLocalSocket::bytesAvailable() const
再インプリメント:QIODevice::bytesAvailable() const.
[override virtual]
qint64 QLocalSocket::bytesToWrite() const
再定義: () const:QIODevice::bytesToWrite() const.
[override virtual]
bool QLocalSocket::canReadLine() const
再リプルメント: () const:QIODevice::canReadLine() const.
[override virtual]
void QLocalSocket::close()
再リプルメント:QIODevice::close().
ソケットのI/Oデバイスをクローズし、disconnectFromServer() を呼び出してソケットのコネクションをクローズする。
I/Oデバイスがクローズされたときの動作についてはQIODevice::close() を参照のこと。
abort()も参照のこと 。
void QLocalSocket::connectToServer(QIODeviceBase::OpenMode openMode = ReadWrite)
serverName() への接続を試みる。setServerName() は、接続を開く前に呼び出す必要があります。あるいは、 connectToServer(constQString &name, OpenMode openMode) を使用することもできる;
ソケットは与えられたopenMode でオープンされ、まずConnectingState に入る。接続が確立されると、QLocalSocket はConnectedState に入り、connected() を出力する。
この関数を呼び出した後、ソケットはerrorOccurred() を呼び出してエラーが発生したことを知らせることができる。
state(),serverName(),waitForConnected()も参照の こと。
void QLocalSocket::connectToServer(const QString &name, QIODeviceBase::OpenMode openMode = ReadWrite)
これはオーバーロードされた関数である。
サーバにname を設定し、接続を試みる。
ソケットは与えられたopenMode でオープンされ、まずConnectingState に入る。接続が確立されると、QLocalSocket はConnectedState に入り、connected() を発行する。
この関数を呼び出した後、ソケットはerrorOccurred() を呼び出してエラーが発生したことを知らせることができる。
state(),serverName(),waitForConnected()も参照のこと 。
[signal]
void QLocalSocket::connected()
このシグナルは、connectToServer() が呼び出され、接続が正常に確立された後に発せられる。
connectToServer() およびdisconnected() も参照の こと。
void QLocalSocket::disconnectFromServer()
ソケットをクローズしようとする。書き込み待ちの保留データがある場合、QLocalSocket はClosingState に入り、すべてのデータが書き込まれるまで待つ。最終的に、UnconnectedState に入り、disconnected() シグナルを発する。
connectToServer()も参照のこと 。
[signal]
void QLocalSocket::disconnected()
このシグナルはソケットが切断されたときに発せられる。
connectToServer(),disconnectFromServer(),abort(),connected() も参照の こと。
QLocalSocket::LocalSocketError QLocalSocket::error() const
最後に発生したエラーの種類を返す。
state() およびerrorString() も参照 。
[signal]
void QLocalSocket::errorOccurred(QLocalSocket::LocalSocketError socketError)
このシグナルは、エラーが発生した後に発せられる。socketError パラメータには、発生したエラーのタイプが記述される。
QLocalSocket::LocalSocketError は登録されたメタタイプではないので、キュー接続の場合は () や () で登録する必要があります。Q_DECLARE_METATYPE qRegisterMetaType
error(),errorString(),カスタム Qt タイプの作成も参照してください 。
bool QLocalSocket::flush()
この関数は内部書き込みバッファから可能な限り多くのデータをソケットに書き込みます。何らかのデータが書き込まれた場合、この関数はtrue
を返す。
バッファリングされたデータの送信をすぐに開始する必要がある場合は、この関数を呼び出します(QLocalSocket )。書き込みに成功したバイト数はオペレーティングシステムに依存する。制御がイベント・ループに戻ると、QLocalSocket が自動的にデータ送信を開始するので、ほとんどの場合、この関数を呼び出す必要はない。イベント・ループがない場合は、代わりにwaitForBytesWritten() を呼び出す。
write() およびwaitForBytesWritten()も参照のこと 。
QString QLocalSocket::fullServerName() const
ソケットが接続しているサーバーパスを返す。
注意: この関数の戻り値はプラットフォーム依存である。
connectToServer() およびserverName() も参照 。
[override virtual]
bool QLocalSocket::isSequential() const
再インプリメント:QIODevice::isSequential() const.
bool QLocalSocket::isValid() const
ソケットが有効で使用可能であればtrue
を返し、そうでなければfalse
を返す。
注意: ソケットの状態は、読み書きする前にConnectedState になっていなければならない。
state() およびconnectToServer()も参照のこと 。
[override virtual]
bool QLocalSocket::open(QIODeviceBase::OpenMode openMode = ReadWrite)
再インプリメント:QIODevice::open(QIODeviceBase::OpenMode mode) を再実装する。
connectToServer(OpenMode mode) と同等。ソケットはsetServerName() で定義されたサーバに対して、与えられたopenMode でオープンされる。
他の多くのQIODevice サブクラスと異なり、open() はデバイスを直接オープンしないことに注意すること。この関数は、ソケットが既に接続されているか、接続先のサーバが定義されていない場合は false を返し、それ以外の場合は true を返す。デバイスが実際にオープンされると(あるいは接続に失敗すると)、connected() またはerrorOccurred() シグナルが出力される。
詳細はconnectToServer() を参照。
qint64 QLocalSocket::readBufferSize() const
内部リード・バッファのサイズを返します。これにより、read() またはreadAll() を呼び出す前にクライアントが受信できるデータ量が制限される。読み込みバッファのサイズが 0 (デフォルト) の場合は、バッファにサイズ制限がないことを意味し、 データが失われることはありません。
setReadBufferSize() およびread()も参照 。
[override virtual protected]
qint64 QLocalSocket::readData(char *data, qint64 c)
再実装:QIODevice::readData(char *data, qint64 maxSize)。
[override virtual protected]
qint64 QLocalSocket::readLineData(char *data, qint64 maxSize)
再実装:QIODevice::readLineData(char *data, qint64 maxSize)。
QString QLocalSocket::serverName() const
setServerName() で指定されたピア名、またはsetServerName() が呼び出されていないかconnectToServer() が失敗した場合は空のQString を返す。
setServerName()、connectToServer()、fullServerName()も参照 。
void QLocalSocket::setReadBufferSize(qint64 size)
QLocalSocket の内部読み取りバッファのサイズをsize バイトに設定する。
バッファ・サイズがあるサイズに制限されている場合、QLocalSocket はこのサイズを超えるデータをバッファリングしない。例外的に、バッファサイズを0にすると、読み込みバッファは無制限になり、すべての受信データがバッファリングされる。これがデフォルトである。
このオプションは、特定のタイミングでしかデータを読み込まない場合 (例えばリアルタイムストリーミングアプリケーションなど) や、データを受信しすぎて最終的にアプリケーションがメモリ不足にならないようにソケットを保護したい場合に便利である。
readBufferSize() およびread()も参照の こと。
void QLocalSocket::setServerName(const QString &name)
接続するピアのname を設定する。Windows の name は名前付きパイプの名前であり、Unix の name はローカルドメインソケットの名前である。
この関数は、ソケットが接続されていないときに呼び出されなければならない。
serverName()も参照のこと 。
bool QLocalSocket::setSocketDescriptor(qintptr socketDescriptor, QLocalSocket::LocalSocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite)
ネイティブソケットディスクリプタsocketDescriptor でQLocalSocket を初期化する。socketDescriptor が有効なソケットディスクリプタとして受け付けられればtrue
を返し、そうでなければfalse
を返す。ソケットはopenMode で指定されたモードでオープンされ、socketState で指定されたソケット状態になる。
注意: 同じネイティブソケットディスクリプタで2つのローカルソケットを初期化することはできない。
socketDescriptor(),state(),openMode()も参照のこと 。
[override virtual protected]
qint64 QLocalSocket::skipData(qint64 maxSize)
再定義QIODevice::skipData(qint64 maxSize) を再定義する。
qintptr QLocalSocket::socketDescriptor() const
QLocalSocket オブジェクトのネイティブソケットディスクリプタを返す。
そうでなければ -1 を返す。QLocalSocket がUnconnectedState にある場合、ソケットディスクリプタは利用できない。ソケットディスクリプタの型はプラットフォームに依存する:
- Windows の場合、戻り値はWinsock 2 ソケットハンドルである。
- INTEGRITY の場合、戻り値はQTcpSocket ソケットディスクリプタであり、型はsocketDescriptor で定義される。
- その他の UNIX 系オペレーティングシステムでは、型はソケットを表すファイルディスクリプタである。
setSocketDescriptor()も参照のこと 。
QLocalSocket::LocalSocketState QLocalSocket::state() const
ソケットの状態を返す。
error() も参照の こと。
[signal]
void QLocalSocket::stateChanged(QLocalSocket::LocalSocketState socketState)
このシグナルはQLocalSocket の状態が変化するたびに発せられる。socketState パラメータは新しい状態である。
QLocalSocket::SocketState は登録されたメタタイプではないので、キューイングされた接続の場合はQ_DECLARE_METATYPE() やqRegisterMetaType() で登録する必要がある。
state() およびカスタム Qt タイプの作成も参照してください 。
[override virtual]
bool QLocalSocket::waitForBytesWritten(int msecs = 30000)
reimplementsを参照してください:QIODevice::waitForBytesWritten(int msecs).
bool QLocalSocket::waitForConnected(int msecs = 30000)
ソケットが接続されるまで待ちます。最大でmsecs ミリ秒です。接続が確立された場合、この関数はtrue
を返し、そうでない場合はfalse
を返す。false
を返す場合、error() を呼び出してエラーの原因を特定することができる。
以下の例では、接続が確立されるまで最大1秒待つ:
socket->connectToServer("market"); if (socket->waitForConnected(1000)) qDebug("Connected!");
msecs が -1 の場合、この関数はタイムアウトしない。
connectToServer() およびconnected()も参照のこと 。
bool QLocalSocket::waitForDisconnected(int msecs = 30000)
ソケットが切断されるまで、最大msecs ミリ秒待つ。接続が正常に切断された場合、この関数はtrue
を返す。そうでない場合はfalse
を返す(操作がタイムアウトした場合、エラーが発生した場合、またはQLocalSocket が既に切断されている場合)。false
を返す場合、error ()を呼び出して、エラーの原因を特定することができる。
以下の例では、接続がクローズされるまで最大1秒待つ:
socket->disconnectFromServer(); if (socket->state() == QLocalSocket::UnconnectedState || socket->waitForDisconnected(1000)) { qDebug("Disconnected!"); }
msecs が -1 の場合、この関数はタイムアウトしない。
disconnectFromServer() およびclose()も参照 。
[override virtual]
bool QLocalSocket::waitForReadyRead(int msecs = 30000)
再インプリメント:QIODevice::waitForReadyRead(int msecs)。
この関数は、データが読み取り可能になり、readyRead() シグナルが発せられるまでブロックする。この関数は、msecs ミリ秒後にタイムアウトします。デフォルトのタイムアウトは 30000 ミリ秒です。
この関数は、データが読み取り可能な場合はtrue
を返し、そうでない場合はfalse
を返す(エラーが発生した場合、または操作がタイムアウトした場合)。
waitForBytesWritten()も参照 。
[override virtual protected]
qint64 QLocalSocket::writeData(const char *data, qint64 c)
再実装:QIODevice::writeData(const char *data, qint64 maxSize)を参照してください。
©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。