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 で導入されました。
アクセス関数:
| QLocalSocket::SocketOptions | socketOptions() const |
| void | setSocketOptions(QLocalSocket::SocketOptions option) |
関連項目 :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 パラメータは、発生したエラーの種類を示します。
error() およびerrorString()も参照してください 。
bool QLocalSocket::flush()
この関数は、ブロックすることなく、内部の書き込みバッファから可能な限り多くのデータをソケットに書き込みます。データが書き込まれた場合、この関数はtrue を返します。そうでない場合はfalseが返されます。
バッファされたデータの送信を直ちに開始するために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 モード)を再実装します。
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)
ネイティブソケット記述子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 パラメータは、新しい状態を表します。
state()も参照してください 。
[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秒間待機します:
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) を再実装します。
© 2026 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.