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
この enum は、ソケットを作成する際に使用可能なオプションを記述します。ソケットのアクセスパーミッションをサポートしているプラットフォーム(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 と等価である。
デフォルトではどのフラグも設定されておらず、アクセス許可はプラットフォームのデフォルトである。
listen()も参照のこと 。
メンバ関数ドキュメント
[explicit]
QLocalServer::QLocalServer(QObject *parent = nullptr)
与えられたparent で新しいローカルソケットサーバを作成する。
listen()も参照のこと 。
[virtual noexcept]
QLocalServer::~QLocalServer()
QLocalServer オブジェクトを破棄する。サーバーが接続をリッスンしている場合、自動的にクローズされます。
まだ接続されているクライアント QLocalSocket は、サーバーが削除される前に切断するか、再接続する必要があります。
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 を返す。
bool QLocalServer::listen(const QString &name)
name で着信コネクションをリッスンするようにサーバに指示する。サーバが現在リッスン中の場合は false を返す。成功すればtrueを返し、そうでなければfalseを返します。
name には単一の名前を指定でき、 がプラットフォーム固有の正しいパスを決定します。() は listen に渡された名前を返します。QLocalServer serverName
通常は "foo "のような名前を渡しますが、Unixでは"/tmp/foo "のようなパス、Windowsでは"˶.˶pipefoo "のようなパイプパスにすることもできます。
注: Unixでは、サーバーが閉じずにクラッシュすると、AddressInUseErrorでlistenが失敗します。新しいサーバーを作成するには、このファイルを削除する必要があります。Windowsでは、2つのローカル・サーバーが同時に同じパイプをリッスンできるが、接続はどちらかのサーバーに送られる。
serverName()、isListening()、close()も参照のこと 。
bool QLocalServer::listen(qintptr socketDescriptor)
socketDescriptor で着信接続をリッスンするようサーバに指示する。このプロパティは、サーバが現在リッスン中であればfalse
を返す。成功するとtrue
を返し、失敗するとfalse
を返す。ソケットは新しい接続を受け付ける準備ができていなければならない。ソケットはノンブロッキングモードに設定される。
serverName QString(),fullServerName() は、このオプションがプラットフォームでサポートされている場合、名前の文字列を返すことができる。
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
サーバが着信命令をリッスンするために使用するネイティブソケットディスクリプタを返す。
ディスクリプタの型はプラットフォームに依存する:
- 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 に設定される。
これはブロッキング関数呼び出しである。waitForNewConnection()は、利用可能なイベント・ループがない場合に主に有用である。
ノンブロッキングの代替手段は、newConnection ()シグナルに接続することである。
msec が -1 の場合、この関数はタイムアウトしない。
hasPendingConnections() およびnextPendingConnection()も参照の こと。
© 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.