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

プロパティ

パブリック関数

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::ConnectionRefusedErrorQAbstractSocket::ConnectionRefusedError接続が相手によって拒否された(またはタイムアウトした)。
QLocalSocket::PeerClosedErrorQAbstractSocket::RemoteHostClosedErrorリモートソケットが接続を切断した。クライアントソケット(つまりこのソケット)は、リモートのクローズ通知送信後にクローズされることに注意。
QLocalSocket::ServerNotFoundErrorQAbstractSocket::HostNotFoundErrorローカルソケット名が見つからない。
QLocalSocket::SocketAccessErrorQAbstractSocket::SocketAccessErrorアプリケーションに必要な権限がないため、ソケット操作に失敗した。
QLocalSocket::SocketResourceErrorQAbstractSocket::SocketResourceErrorローカルシステムのリソースが不足した(ソケット数が多すぎるなど)。
QLocalSocket::SocketTimeoutErrorQAbstractSocket::SocketTimeoutErrorソケット操作がタイムアウトした。
QLocalSocket::DatagramTooLargeErrorQAbstractSocket::DatagramTooLargeErrorデータグラムのサイズがオペレーティングシステムの制限値(8192バイトなど)より大きかった。
QLocalSocket::ConnectionErrorQAbstractSocket::NetworkError接続でエラーが発生した。
QLocalSocket::UnsupportedSocketOperationErrorQAbstractSocket::UnsupportedSocketOperationError要求されたソケット操作がローカルオペレーティングシステムでサポートされていない。
QLocalSocket::OperationErrorQAbstractSocket::OperationErrorソケットが許可されていない状態で操作を試みた。
QLocalSocket::UnknownSocketErrorQAbstractSocket::UnknownSocketError不明なエラーが発生した。

enum QLocalSocket::LocalSocketState

この列挙型はソケットが取り得る様々な状態を記述する。

定数説明
QLocalSocket::UnconnectedStateQAbstractSocket::UnconnectedStateソケットは接続されていない。
QLocalSocket::ConnectingStateQAbstractSocket::ConnectingStateソケットが接続の確立を開始した。
QLocalSocket::ConnectedStateQAbstractSocket::ConnectedState接続が確立された。
QLocalSocket::ClosingStateQAbstractSocket::ClosingStateソケットが閉じようとしている(データがまだ書き込まれるのを待っているかもしれない)。

QLocalSocket::state()も参照

[since 6.2] enum QLocalSocket::SocketOption
flags QLocalSocket::SocketOptions

この列挙型は、サーバーへの接続に使用できるオプションを記述します。現在、LinuxとAndroidでは、抽象アドレスにバインドされたソケットをリッスンしているサーバーへの接続を指定するために使用されます。

定数説明
QLocalSocket::NoOptions0x00オプションが設定されていない。
QLocalSocket::AbstractNamespaceOption0x01ソケットは抽象アドレスへの接続を試みる。このフラグは 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)

新しいローカルソケットを作成する。引数parentQObject のコンストラクタに渡される。

[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 に入る。接続が確立されると、QLocalSocketConnectedState に入り、connected() を出力する。

この関数を呼び出した後、ソケットはerrorOccurred() を呼び出してエラーが発生したことを知らせることができる。

state(),serverName(),waitForConnected()も参照の こと。

void QLocalSocket::connectToServer(const QString &name, QIODeviceBase::OpenMode openMode = ReadWrite)

これはオーバーロードされた関数である。

サーバname を設定し、そこへの接続を試みる。

ソケットは与えられたopenMode でオープンされ、まずConnectingState に入る。接続が確立されると、QLocalSocketConnectedState に入り、connected() を発信する。

この関数を呼び出した後、ソケットはerrorOccurred() を呼び出してエラーが発生したことを知らせることができる。

state(),serverName(),waitForConnected()も参照の こと。

[signal] void QLocalSocket::connected()

このシグナルは、connectToServer ()が呼び出され、接続が正常に確立された後に発せられる。

connectToServer() およびdisconnected()も参照

void QLocalSocket::disconnectFromServer()

ソケットをクローズしようとする。書き込み待ちの保留データがある場合、QLocalSocketClosingState に入り、すべてのデータが書き込まれるまで待つ。最終的には、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)と同等。与えられたopenModesetServerName() で定義されたサーバにソケットをオープンする。

他の多くの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 オブジェクトのネイティブソケットディスクリプタを返す。

QLocalSocketUnconnectedState の場合、ソケットディスクリプタは利用できない。ディスクリプタの型はプラットフォームに依存する:

  • 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.