QLocalServer Class
QLocalServer クラスは、ローカルのソケットベースのサーバーを提供します。詳細...
| ヘッダー: | #include <QLocalServer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| 継承元: | QObject |
パブリック型
| enum | SocketOption { NoOptions, UserAccessOption, GroupAccessOption, OtherAccessOption, WorldAccessOption, AbstractNamespaceOption } |
| flags | SocketOptions |
プロパティ
- socketOptions : SocketOptions
パブリック関数
| QLocalServer(QObject *parent = nullptr) | |
| virtual | ~QLocalServer() |
| QBindable<QLocalServer::SocketOptions> | bindableSocketOptions() |
| void | close() |
| QString | errorString() const |
| QString | fullServerName() const |
| virtual bool | hasPendingConnections() const |
| bool | isListening() const |
| bool | listen(const QString &name) |
| bool | listen(qintptr socketDescriptor) |
(since 6.3) int | listenBacklogSize() const |
| int | maxPendingConnections() const |
| virtual QLocalSocket * | nextPendingConnection() |
| QAbstractSocket::SocketError | serverError() const |
| QString | serverName() const |
(since 6.3) void | setListenBacklogSize(int size) |
| void | setMaxPendingConnections(int numConnections) |
| void | setSocketOptions(QLocalServer::SocketOptions options) |
| qintptr | socketDescriptor() const |
| QLocalServer::SocketOptions | socketOptions() const |
| bool | waitForNewConnection(int msec = 0, bool *timedOut = nullptr) |
シグナル
| void | newConnection() |
静的パブリックメンバー
| bool | removeServer(const QString &name) |
保護関数
(since 6.8) void | addPendingConnection(QLocalSocket *socket) |
| virtual void | incomingConnection(quintptr socketDescriptor) |
詳細な説明
このクラスを使用すると、ローカルソケットからの接続を受け入れることができます。
listen() を呼び出すと、サーバーは指定されたキーで着信接続のリスニングを開始します。その後、クライアントがサーバーに接続するたびに、newConnection() シグナルが発信されます。
nextPendingConnection() を呼び出すと、保留中の接続を接続済みQLocalSocket として受け入れます。この関数は、クライアントとの通信に使用できるQLocalSocket へのポインタを返します。
エラーが発生した場合、serverError() はエラーの種類を返し、errorString() を呼び出すことで、何が起こったのかについて人間が理解できる説明を取得できます。
接続をリッスンしている場合、サーバーがリッスンしている名前はserverName() を通じて取得できます。
close() を呼び出すと、QLocalServer は着信接続の待機を停止します。
QLocalServerはイベントループでの使用を想定して設計されていますが、イベントループなしで使用することも可能です。その場合は、waitForNewConnection() を使用する必要があります。この関数は、接続が可能になるか、タイムアウトが切れるまでブロックします。
QLocalSocket およびQTcpServerも参照してください 。
メンバ型のドキュメント
enum QLocalServer::SocketOption
flags QLocalServer::SocketOptions
この列挙型は、ソケットの作成に使用できるオプションを定義しています。これは、ソケットのアクセス権限をサポートしているプラットフォーム(Linux、Windows)において、アクセス権限を変更します。GroupAccess および OtherAccess の意味は、プラットフォームによって若干異なる場合があります。 Linux および Android では、抽象アドレスを持つソケットを使用することが可能であり、そのようなソケットに対してはソケットのアクセス権限は意味を持ちません。
| 定数 | 値 | 説明 |
|---|---|---|
QLocalServer::NoOptions | 0x0 | アクセス制限は設定されていません。 |
QLocalServer::UserAccessOption | 0x01 | アクセスは、ソケットを作成したプロセスと同じユーザーに制限されます。 |
QLocalServer::GroupAccessOption | 0x2 | Linux では、ソケットを作成したユーザーとは異なるが、同じグループに所属するユーザーのみがアクセスできます。Windows では、プロセスのプライマリグループに所属するユーザーのみがアクセスできます。 |
QLocalServer::OtherAccessOption | 0x4 | Linux では、ソケットを作成したユーザーおよびグループ以外のすべてのユーザーがアクセスできます。Windows では、すべてのユーザーがアクセスできます。 |
QLocalServer::WorldAccessOption | 0x7 | アクセス制限なし。 |
QLocalServer::AbstractNamespaceOption | 0x8 | リスニングソケットは抽象ネームスペース内に作成されます。このフラグは Linux 独自です。他のプラットフォームの場合、コードの移植性を考慮して、このフラグは WorldAccessOption と同等となります。 |
SocketOptions 型はQFlags<SocketOption> の typedef です。SocketOption 値の OR 組み合わせを格納します。
socketOptionsも参照してください 。
プロパティのドキュメント
[bindable] socketOptions : SocketOptions
注:この プロパティは、QProperty のバインディングに対応しています。
このプロパティには、ソケットの動作を制御するソケットオプションが格納されます。
たとえば、ソケットは、どのユーザー ID がソケットに接続できるかを制限することができます。
これらのオプションは、listen() が呼び出される前に設定する必要があります。
Linux 上の Unix ドメインソケットなど、場合によっては、ソケットへのアクセスはファイルシステムの権限によって決定され、umask に基づいて作成されます。アクセスフラグを設定すると、これが上書きされ、指定どおりにアクセスが制限または許可されます。
macOS などの他の Unix ベースのオペレーティングシステムでは、Unix ドメインソケットのファイル権限は反映されず、デフォルトで WorldAccess が設定されているため、これらの権限フラグは効果を持ちません。
Windows では、UserAccessOption を指定するだけで、特権のないプロセスが、同じユーザーが実行している特権プロセスによって作成されたローカルサーバーに接続できるようになります。GroupAccessOption はプロセスのプライマリグループを指します(Windows ドキュメントの TokenPrimaryGroup を参照)。OtherAccessOption は、よく知られている「Everyone」グループを指します。
Linuxプラットフォームでは、ファイルシステムとは独立した抽象ネームスペース内にソケットを作成することが可能です。この種のソケットを使用する場合、アクセス権限オプションは無視されます。その他のプラットフォームでは、AbstractNamespaceOption はWorldAccessOption と同等です。
デフォルトでは、どのフラグも設定されておらず、アクセス権限はプラットフォームのデフォルト設定となります。
アクセス関数:
| QLocalServer::SocketOptions | socketOptions() const |
| void | setSocketOptions(QLocalServer::SocketOptions options) |
listen()も参照してください 。
メンバ関数のドキュメント
[explicit] QLocalServer::QLocalServer(QObject *parent = nullptr)
指定されたparent を使用して、新しいローカルソケットサーバーを作成します。
listen()も参照してください 。
[virtual noexcept] QLocalServer::~QLocalServer()
QLocalServer オブジェクトを破棄します。サーバーが接続を待機している場合は、自動的に閉じられます。
まだ接続中のクライアントの QLocalSockets は、サーバーが削除される前に、接続を解除するか、親オブジェクトを変更する必要があります。
close()も参照してください 。
[protected, since 6.8] void QLocalServer::addPendingConnection(QLocalSocket *socket)
この関数は、QLocalServer::incomingConnection() によって呼び出され、socket を保留中の着信接続のリストに追加します。
注: Pending Connections の仕組みを破綻させたくない場合は、再実装したincomingConnection() からこのメンバ関数を呼び出すことを忘れないでください 。この関数は、ソケットが追加された後にnewConnection() シグナルを発行します。
この関数は Qt 6.8 で導入されました。
incomingConnection() およびnewConnection()も参照してください 。
void QLocalServer::close()
着信接続の待機を停止します。既存の接続には影響ありませんが、新しい接続はすべて拒否されます。
isListening() およびlisten()も参照してください 。
QString QLocalServer::errorString() const
serverError() によって報告された現在のエラーに応じた、人間が読みやすいメッセージを返します。適切な文字列がない場合は、空の文字列が返されます。
serverError()も参照してください 。
QString QLocalServer::fullServerName() const
サーバーがリスニングしている完全なパスを返します。
注:これはプラットフォームに依存します
関連項目: listen() およびserverName()。
[virtual] bool QLocalServer::hasPendingConnections() const
サーバーに保留中の接続がある場合は `true ` を返し、そうでない場合は `false` を返します。
nextPendingConnection() およびsetMaxPendingConnections()も参照してください 。
[virtual protected] void QLocalServer::incomingConnection(quintptr socketDescriptor)
この仮想関数は、新しい接続が利用可能になった際に、QLocalServer によって呼び出されます。socketDescriptor は、受け入れられた接続に対するネイティブソケット記述子です。
基本実装では、QLocalSocket を作成し、ソケット記述子を設定した後、QLocalSocket を保留中の接続の内部リストに格納します。最後に、newConnection() が発行されます。
接続が利用可能になった際のサーバーの動作を変更するには、この関数を再実装してください。
newConnection()、nextPendingConnection()、およびQLocalSocket::setSocketDescriptor()も参照してください 。
bool QLocalServer::isListening() const
サーバーが着信接続を待機している場合は `true ` を返し、そうでない場合は `false ` を返します。
listen() およびclose()も参照してください 。
bool QLocalServer::listen(const QString &name)
サーバーに対し、name での着信接続をリッスンするよう指示します。サーバーがすでにリッスンしている場合、listen() は失敗します。成功した場合は `true ` を返し、それ以外の場合は `false ` を返します。
name 単一の名前を指定することも可能で、QLocalServer がプラットフォーム固有の正しいパスを決定します。serverName() は、listen() に渡された名前を返します。
通常は「foo」のような名前を指定するだけで済みますが、Unix では「/tmp/foo」のようなパス、Windows では「\\.\pipe\foo 」のようなパイプパスを指定することも可能です。
注: Unixでは 、以前のサーバーが終了せずにクラッシュしていた場合、listen() は AddressInUseError を返して失敗します。新しいサーバーを作成するには、まずそのファイルを削除する必要があります。Windows では、2 つのローカルサーバーが同時に同じパイプをリッスンできますが、着信接続はそれらのいずれか一方に接続されます。
関連項目: serverName(),isListening(), およびclose()。
bool QLocalServer::listen(qintptr socketDescriptor)
サーバーに対し、socketDescriptor での着信接続をリッスンするよう指示します。サーバーが現在リッスンしている場合、このプロパティは `false ` を返します。成功した場合は `true ` を返し、失敗した場合は `false` を返します。ソケットは、プラットフォーム固有の追加関数が呼び出されることなく、新しい接続を受け入れる準備ができていなければなりません。ソケットはノンブロッキングモードに設定されます。
serverName(),fullServerName() は、プラットフォームがこのオプションをサポートしている場合、名前を含む文字列を返すことがあります。そうでない場合は、空のQString を返します。特に、Linux でサポートされている抽象名前空間内のソケットのアドレスには、印刷不可能な文字が含まれている場合、有用な名前が得られません。
isListening() およびclose()も参照してください 。
[since 6.3] int QLocalServer::listenBacklogSize() const
受け入れ可能な接続のバックログキューのサイズを返します。
この関数は Qt 6.3 で導入されました。
setListenBacklogSize()も参照してください 。
int QLocalServer::maxPendingConnections() const
保留中の受け入れ済み接続の最大数を返します。デフォルトは 30 です。
setMaxPendingConnections() およびhasPendingConnections()も参照してください 。
[signal] void QLocalServer::newConnection()
このシグナルは、新しい接続が利用可能になるたびに発信されます。
hasPendingConnections() およびnextPendingConnection()も参照してください 。
[virtual] QLocalSocket *QLocalServer::nextPendingConnection()
次に処理待ちの接続を、接続済みのQLocalSocket オブジェクトとして返します。
このソケットはサーバーの子として作成されるため、QLocalServer オブジェクトが破棄されると自動的に削除されます。ただし、メモリの無駄遣いを防ぐため、使用が終了したらオブジェクトを明示的に削除することをお勧めします。
nullptr 保留中の接続がない状態でこの関数が呼び出された場合、が返されます。
hasPendingConnections()、newConnection()、およびincomingConnection()も参照してください 。
[static] bool QLocalServer::removeServer(const QString &name)
listen() の呼び出しを失敗させる可能性のあるサーバーインスタンスをすべて削除し、成功した場合は `true ` を返し、失敗した場合は `false` を返します。この関数は、以前のサーバーインスタンスが適切にクリーンアップされていない場合のクラッシュからの復旧を目的としています。
Windows では、この関数は何もしません。Unix では、name で指定されたソケットファイルを削除します。
警告: 実行中のインスタンスのソケットを削除しないよう注意してください 。
QAbstractSocket::SocketError QLocalServer::serverError() const
最後に発生したエラーのタイプ、またはNoError を返します。
errorString()も参照してください 。
QString QLocalServer::serverName() const
サーバーが接続を待機している場合はサーバー名を返し、そうでない場合は QString() を返します。
listen() およびfullServerName()も参照してください 。
[since 6.3] void QLocalServer::setListenBacklogSize(int size)
受信接続のバックログキューサイズを `size` に設定します。オペレーティングシステムによって、この値が縮小されたり無視されたりする場合があります。デフォルトでは、キューサイズは 50 です。
注:この プロパティは 、listen() を呼び出す前に設定する必要があります。
この関数は Qt 6.3 で導入されました。
listenBacklogSize()も参照してください 。
void QLocalServer::setMaxPendingConnections(int numConnections)
保留中の受け入れ済み接続の最大数を `numConnections` に設定します。`QLocalServer ` は、`nextPendingConnection()` が呼び出される前に、最大 `numConnections ` 件の着信接続を受け入れます。
注:QLocalServer は、保留中の接続数が最大数に達すると新しい接続の受け入れを停止しますが、オペレーティングシステムがそれらをキューに残したままにする場合があり、その結果、クライアントから接続済みというシグナルが送信されることがあります。
関連項目: maxPendingConnections() およびhasPendingConnections()。
qintptr QLocalServer::socketDescriptor() const
サーバーが着信する指示をリッスンするために使用するネイティブソケット記述子を返します。サーバーがリッスンしていない場合は -1 を返します。
記述子の型はプラットフォームによって異なります。
- Windows では、戻り値はWinsock 2 ソケットハンドルです。
- INTEGRITYでは、戻り値はQTcpServer ソケット記述子であり、その型はsocketDescriptor で定義されています。
- その他のすべてのUNIX系オペレーティングシステムでは、型はリスニングソケットを表すファイル記述子です。
listen()も参照してください 。
QLocalServer::SocketOptions QLocalServer::socketOptions() const
そのソケットに設定されているソケットオプションを返します。
注: プロパティ `socketOptions`のゲッター 関数です。
関連項目: setSocketOptions()。
bool QLocalServer::waitForNewConnection(int msec = 0, bool *timedOut = nullptr)
最大msec ミリ秒間、または着信接続が利用可能になるまで待機します。接続が利用可能な場合はtrue を返し、そうでない場合はfalse を返します。操作がタイムアウトし、timedOut がnullptr でない場合、*timedOutはtrueに設定されます。
これはブロッキング関数呼び出しです。関数が戻るまでアプリケーション全体が応答しなくなるため、シングルスレッドのGUIアプリケーションでの使用は推奨されません。waitForNewConnection()は、主にイベントループが利用できない場合に有用です。
非ブロッキングの代替手段としては、newConnection() シグナルに接続する方法があります。
msec が -1 の場合、この関数はタイムアウトしません。
hasPendingConnections() およびnextPendingConnection()も参照してください 。
© 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.