QLocalSocket Class
QLocalSocketクラスはローカルソケットを提供します。詳細...
ヘッダ | #include <QLocalSocket> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
継承: | 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
再実装:QIODevice::bytesToWrite() const.
[override virtual]
bool QLocalSocket::canReadLine() 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()、Creating Custom Qt Typesも参照して ください。
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)と同等。与えられたopenMode でsetServerName() で定義されたサーバにソケットをオープンする。
他の多くの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)
QLocalSocket をネイティブソケットディスクリプタsocketDescriptor で初期化する。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 オブジェクトのネイティブソケットディスクリプタを返す。
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() や、Creating Custom Qt Typesも参照してください 。
[override virtual]
bool QLocalSocket::waitForBytesWritten(int msecs = 30000)
再インプリメント: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秒待機する:
ソケット->disconnectFromServer();if(socket->state()==QLocalSocketif (socket->state() ==: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).
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.