Auf dieser Seite

QLocalServer Class

Die Klasse „QLocalServer“ stellt einen lokalen, auf Sockets basierenden Server bereit. Mehr dazu...

Header: #include <QLocalServer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Erbt von: QObject

Öffentliche Typen

enum SocketOption { NoOptions, UserAccessOption, GroupAccessOption, OtherAccessOption, WorldAccessOption, AbstractNamespaceOption }
flags SocketOptions

Eigenschaften

Öffentliche Funktionen

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)

Signale

void newConnection()

Statische öffentliche Mitglieder

bool removeServer(const QString &name)

Geschützte Funktionen

(since 6.8) void addPendingConnection(QLocalSocket *socket)
virtual void incomingConnection(quintptr socketDescriptor)

Ausführliche Beschreibung

Diese Klasse ermöglicht es, eingehende lokale Socket-Verbindungen anzunehmen.

Rufen Sie ` listen()` auf, damit der Server auf eingehende Verbindungen unter einem bestimmten Schlüssel lauscht. Das Signal ` newConnection()` wird dann jedes Mal ausgelöst, wenn ein Client eine Verbindung zum Server herstellt.

Rufen Sie ` nextPendingConnection()` auf, um die ausstehende Verbindung als verbundenes ` QLocalSocket` anzunehmen. Die Funktion gibt einen Zeiger auf ein ` QLocalSocket ` zurück, das für die Kommunikation mit dem Client verwendet werden kann.

Tritt ein Fehler auf, gibt ` serverError()` den Fehlertyp zurück, und mit ` errorString()` kann eine für Menschen lesbare Beschreibung des Vorfalls abgerufen werden.

Beim Abhören von Verbindungen ist der Name, unter dem der Server auf Verbindungen wartet, über ` serverName()` abrufbar.

Durch den Aufruf von ` close()` beendet `QLocalServer` das Abhören auf eingehende Verbindungen.

Obwohl QLocalServer für die Verwendung mit einer Ereignisschleife konzipiert ist, ist es möglich, ihn auch ohne eine solche zu nutzen. In diesem Fall müssen Sie ` waitForNewConnection()` verwenden, das so lange blockiert, bis entweder eine Verbindung verfügbar ist oder eine Zeitüberschreitung eintritt.

Siehe auch „ QLocalSocket “ und „ QTcpServer “.

Dokumentation zu Mitgliedstypen

enum QLocalServer::SocketOption
flags QLocalServer::SocketOptions

Diese Aufzählung beschreibt die möglichen Optionen, die zum Erstellen des Sockets verwendet werden können. Dies ändert die Zugriffsrechte auf Plattformen (Linux, Windows), die Zugriffsrechte für Sockets unterstützen. Sowohl „GroupAccess“ als auch „OtherAccess“ können je nach Plattform geringfügig unterschiedliche Bedeutungen haben. Unter Linux und Android ist es möglich, Sockets mit abstrakten Adressen zu verwenden; für solche Sockets haben Socket-Berechtigungen keine Bedeutung.

KonstanteWertBeschreibung
QLocalServer::NoOptions0x0Es wurden keine Zugriffsbeschränkungen festgelegt.
QLocalServer::UserAccessOption0x01Der Zugriff ist auf denselben Benutzer beschränkt wie der Prozess, der den Socket erstellt hat.
QLocalServer::GroupAccessOption0x2Unter Linux ist der Zugriff auf dieselbe Gruppe beschränkt, jedoch nicht auf denselben Benutzer, der den Socket erstellt hat. Unter Windows ist der Zugriff auf die Primärgruppe des Prozesses beschränkt
QLocalServer::OtherAccessOption0x4Unter Linux ist der Zugriff für alle außer dem Benutzer und der Gruppe möglich, die den Socket erstellt haben. Unter Windows ist der Zugriff für alle möglich.
QLocalServer::WorldAccessOption0x7Keine Zugriffsbeschränkungen.
QLocalServer::AbstractNamespaceOption0x8Der Listening-Socket wird im abstrakten Namensraum erstellt. Dieses Flag ist Linux-spezifisch. Bei anderen Plattformen entspricht dieses Flag aus Gründen der Code-Portabilität der Option „WorldAccessOption“.

Der Typ `SocketOptions` ist ein `typedef` für ` QFlags<SocketOption>`. Er speichert eine ODER-Kombination von `SocketOption`-Werten.

Siehe auch „ socketOptions “.

Dokumentation zu Eigenschaften

[bindable] socketOptions : SocketOptions

Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.

Diese Eigenschaft enthält die Socket-Optionen, die die Funktionsweise des Sockets steuern.

Beispielsweise kann der Socket den Zugriff darauf beschränken, welche Benutzer-IDs eine Verbindung zum Socket herstellen dürfen.

Diese Optionen müssen vor dem Aufruf von ` listen()` festgelegt werden.

In einigen Fällen, wie z. B. bei Unix-Domain-Sockets unter Linux, wird der Zugriff auf den Socket durch Dateisystemberechtigungen bestimmt und auf der Grundlage der umask erstellt. Das Setzen der Zugriffsflags überschreibt dies und schränkt den Zugriff wie angegeben ein oder erlaubt ihn.

Andere Unix-basierte Betriebssysteme, wie beispielsweise macOS, berücksichtigen keine Dateiberechtigungen für Unix-Domain-Sockets und verfügen standardmäßig über „WorldAccess“, sodass diese Berechtigungsflags keine Wirkung haben.

Unter Windows reicht „ UserAccessOption “ aus, um einem Prozess ohne erweiterte Rechte die Verbindung zu einem lokalen Server zu ermöglichen, der von einem Prozess mit erweiterten Rechten erstellt wurde, der vom selben Benutzer ausgeführt wird. „ GroupAccessOption “ bezieht sich auf die Primärgruppe des Prozesses (siehe „TokenPrimaryGroup“ in der Windows-Dokumentation). „ OtherAccessOption “ bezieht sich auf die bekannte Gruppe „Everyone“.

Auf Linux-Plattformen ist es möglich, einen Socket im abstrakten Namensraum zu erstellen, der unabhängig vom Dateisystem ist. Die Verwendung dieser Art von Socket bedeutet, dass Berechtigungsoptionen ignoriert werden. Auf anderen Plattformen entspricht „ AbstractNamespaceOption “ dem Wert „ WorldAccessOption “.

Standardmäßig ist keines der Flags gesetzt; die Zugriffsrechte entsprechen den Plattformstandards.

Zugriffsfunktionen:

QLocalServer::SocketOptions socketOptions() const
void setSocketOptions(QLocalServer::SocketOptions options)

Siehe auch ` listen()`.

Dokumentation zu den Mitgliedsfunktionen

[explicit] QLocalServer::QLocalServer(QObject *parent = nullptr)

Erstellen Sie einen neuen lokalen Socket-Server mit der angegebenen Adresse parent.

Siehe auch listen().

[virtual noexcept] QLocalServer::~QLocalServer()

Löscht das ` QLocalServer `-Objekt. Wenn der Server auf Verbindungen wartet, wird die Verbindung automatisch geschlossen.

Alle noch verbundenen Client-`QLocalSockets` müssen entweder die Verbindung trennen oder einem neuen Elternobjekt zugeordnet werden, bevor der Server gelöscht wird.

Siehe auch ` close()`.

[protected, since 6.8] void QLocalServer::addPendingConnection(QLocalSocket *socket)

Diese Funktion wird von ` QLocalServer::incomingConnection()` aufgerufen, um die ` socket ` zur Liste der ausstehenden eingehenden Verbindungen hinzuzufügen.

Hinweis: VergessenSie nicht , dieses Member aus der neu implementierten Funktion ` incomingConnection()` aufzurufen, wenn Sie den Mechanismus für ausstehende Verbindungen nicht unterbrechen möchten. Diese Funktion löst das Signal ` newConnection()` aus, nachdem der Socket hinzugefügt wurde.

Diese Funktion wurde in Qt 6.8 eingeführt.

Siehe auch ` incomingConnection()` und ` newConnection()`.

void QLocalServer::close()

Das Abhören auf eingehende Verbindungen wird beendet. Bestehende Verbindungen sind davon nicht betroffen, neue Verbindungen werden jedoch abgelehnt.

Siehe auch isListening() und listen().

QString QLocalServer::errorString() const

Gibt die für den aktuellen, von serverError() gemeldeten Fehler passende, für Menschen lesbare Meldung zurück. Ist keine passende Zeichenkette verfügbar, wird eine leere Zeichenkette zurückgegeben.

Siehe auch serverError().

QString QLocalServer::fullServerName() const

Gibt den vollständigen Pfad zurück, auf dem der Server auf eingehende Verbindungen wartet.

Hinweis: Dies ist plattformabhängig

Siehe auch listen() und serverName().

[virtual] bool QLocalServer::hasPendingConnections() const

Gibt „ true “ zurück, wenn der Server eine ausstehende Verbindung hat; andernfalls gibt er „ false “ zurück.

Siehe auch nextPendingConnection() und setMaxPendingConnections().

[virtual protected] void QLocalServer::incomingConnection(quintptr socketDescriptor)

Diese virtuelle Funktion wird von ` QLocalServer ` aufgerufen, wenn eine neue Verbindung verfügbar ist. ` socketDescriptor ` ist der native Socket-Deskriptor für die akzeptierte Verbindung.

Die Basisimplementierung erstellt einen ` QLocalSocket`, legt den Socket-Deskriptor fest und speichert den ` QLocalSocket ` anschließend in einer internen Liste ausstehender Verbindungen. Abschließend wird ` newConnection()` ausgelöst.

Implementieren Sie diese Funktion neu, um das Verhalten des Servers zu ändern, wenn eine Verbindung verfügbar ist.

Siehe auch ` newConnection()`, ` nextPendingConnection()` und ` QLocalSocket::setSocketDescriptor()`.

bool QLocalServer::isListening() const

Gibt „ true “ zurück, wenn der Server auf eingehende Verbindungen wartet, andernfalls „ false “.

Siehe auch listen() und close().

bool QLocalServer::listen(const QString &name)

Weist den Server an, auf eingehende Verbindungen unter name zu warten. Wenn der Server bereits auf Verbindungen wartet, schlägt die Funktion `listen()` fehl. Gibt bei Erfolg ` true ` zurück, andernfalls ` false `.

name Es kann ein einzelner Name angegeben werden, und QLocalServer ermittelt den korrekten plattformspezifischen Pfad. serverName() gibt den Namen zurück, der an listen() übergeben wurde.

Normalerweise würde man einfach einen Namen wie „foo“ übergeben, unter Unix könnte dies jedoch auch ein Pfad wie „/tmp/foo“ sein und unter Windows ein Pipe-Pfad wie „\\.\pipe\foo “

Hinweis: Unter Unix schlägt `listen()` mit dem Fehler `AddressInUseError` fehl, wenn der Server zuvor abgestürzt ist, ohne geschlossen worden zu sein. Um einen neuen Server zu erstellen, sollte die Datei zunächst gelöscht werden. Unter Windows können zwei lokale Server gleichzeitig auf dieselbe Pipe warten, aber jede eingehende Verbindung wird an einen beliebigen von ihnen weitergeleitet.

Siehe auch serverName(), isListening() und close().

bool QLocalServer::listen(qintptr socketDescriptor)

Weist den Server an, auf eingehende Verbindungen unter socketDescriptor zu warten. Die Eigenschaft gibt „ false “ zurück, wenn der Server derzeit auf Verbindungen wartet. Bei Erfolg gibt sie „ true “ zurück; andernfalls gibt sie „ false “ zurück. Der Socket muss bereit sein, neue Verbindungen anzunehmen, ohne dass zusätzliche plattformspezifische Funktionen aufgerufen werden. Der Socket wird in den nicht blockierenden Modus versetzt.

serverName(), fullServerName() können eine Zeichenkette mit einem Namen zurückgeben, sofern diese Option von der Plattform unterstützt wird; andernfalls geben sie ein leeres QString zurück. Insbesondere liefern die Adressen von Sockets im von Linux unterstützten abstrakten Namensraum keine aussagekräftigen Namen, wenn sie nicht druckbare Zeichen enthalten.

Siehe auch ` isListening()` und ` close()`.

[since 6.3] int QLocalServer::listenBacklogSize() const

Gibt die Größe der Backlog-Warteschlange der noch anzunehmenden Verbindungen zurück.

Diese Funktion wurde in Qt 6.3 eingeführt.

Siehe auch ` setListenBacklogSize()`.

int QLocalServer::maxPendingConnections() const

Gibt die maximale Anzahl ausstehender akzeptierter Verbindungen zurück. Der Standardwert beträgt 30.

Siehe auch setMaxPendingConnections() und hasPendingConnections().

[signal] void QLocalServer::newConnection()

Dieses Signal wird jedes Mal ausgegeben, wenn eine neue Verbindung verfügbar ist.

Siehe auch hasPendingConnections() und nextPendingConnection().

[virtual] QLocalSocket *QLocalServer::nextPendingConnection()

Gibt die nächste ausstehende Verbindung als verbundenes „ QLocalSocket “-Objekt zurück.

Der Socket wird als untergeordnetes Element des Servers erstellt, was bedeutet, dass er automatisch gelöscht wird, wenn das ` QLocalServer `-Objekt zerstört wird. Es empfiehlt sich dennoch, das Objekt explizit zu löschen, wenn Sie es nicht mehr benötigen, um Speicherplatzverschwendung zu vermeiden.

nullptr wird zurückgegeben, wenn diese Funktion aufgerufen wird, während keine ausstehenden Verbindungen vorhanden sind.

Siehe auch ` hasPendingConnections()`, ` newConnection()` und ` incomingConnection()`.

[static] bool QLocalServer::removeServer(const QString &name)

Entfernt jede Serverinstanz, die dazu führen könnte, dass ein Aufruf von ` listen()` fehlschlägt, und gibt bei Erfolg ` true ` zurück; andernfalls wird ` false` zurückgegeben. Diese Funktion dient dazu, nach einem Absturz wiederherzustellen, wenn die vorherige Serverinstanz nicht bereinigt wurde.

Unter Windows führt diese Funktion keine Aktion aus; unter Unix entfernt sie die durch ` name` angegebene Socket-Datei.

Warnung: Achten Sie darauf, das Entfernen von Sockets laufender Instanzen zu vermeiden.

QAbstractSocket::SocketError QLocalServer::serverError() const

Gibt den Typ des zuletzt aufgetretenen Fehlers oder „ NoError “ zurück.

Siehe auch errorString().

QString QLocalServer::serverName() const

Gibt den Servernamen zurück, wenn der Server auf Verbindungen wartet; andernfalls wird QString() zurückgegeben.

Siehe auch „ listen()“ und „ fullServerName()“.

[since 6.3] void QLocalServer::setListenBacklogSize(int size)

Legt die Größe der Backlog-Warteschlange für anzunehmende Verbindungen auf ` size` fest. Das Betriebssystem kann diesen Wert verringern oder ignorieren. Standardmäßig beträgt die Warteschlangengröße 50.

Hinweis: Diese Eigenschaft muss vor dem Aufruf von ` listen()` festgelegt werden.

Diese Funktion wurde in Qt 6.3 eingeführt.

Siehe auch ` listenBacklogSize()`.

void QLocalServer::setMaxPendingConnections(int numConnections)

Legt die maximale Anzahl ausstehender akzeptierter Verbindungen auf numConnections fest. QLocalServer akzeptiert nicht mehr als numConnections eingehende Verbindungen, bevor nextPendingConnection() aufgerufen wird.

Hinweis: Auch wenn QLocalServer keine neuen Verbindungen mehr akzeptiert, sobald die maximale Anzahl an ausstehenden Verbindungen erreicht ist, kann es vorkommen, dass das Betriebssystem diese weiterhin in der Warteschlange hält, was dazu führt, dass Clients signalisieren, dass eine Verbindung besteht.

Siehe auch maxPendingConnections() und hasPendingConnections().

qintptr QLocalServer::socketDescriptor() const

Gibt den nativen Socket-Deskriptor zurück, den der Server zum Abhören eingehender Befehle verwendet, oder -1, wenn der Server nicht im Abhörmodus ist.

Der Typ des Deskriptors hängt von der Plattform ab:

  • Unter Windows ist der Rückgabewert ein Winsock-2-Socket-Handle.
  • Unter INTEGRITY ist der Rückgabewert der Socket-Deskriptor „ QTcpServer “, und der Typ wird durch ` socketDescriptor` definiert.
  • Auf allen anderen UNIX-ähnlichen Betriebssystemen ist der Typ ein Dateideskriptor, der einen Listening-Socket darstellt.

Siehe auch listen().

QLocalServer::SocketOptions QLocalServer::socketOptions() const

Gibt die für den Socket festgelegten Socket-Optionen zurück.

Hinweis: Getter -Funktion für die Eigenschaft „socketOptions“.

Siehe auch ` setSocketOptions()`.

bool QLocalServer::waitForNewConnection(int msec = 0, bool *timedOut = nullptr)

Wartet höchstens msec Millisekunden oder so lange, bis eine eingehende Verbindung verfügbar ist. Gibt „ true “ zurück, wenn eine Verbindung verfügbar ist; andernfalls wird „ false “ zurückgegeben. Wenn das Zeitlimit für den Vorgang abgelaufen ist und „ timedOut “ nicht „ nullptr “ ist, wird *timedOut auf „true“ gesetzt.

Dies ist ein blockierender Funktionsaufruf. Von seiner Verwendung in einer Single-Thread-GUI-Anwendung wird abgeraten, da die gesamte Anwendung nicht mehr reagiert, bis die Funktion zurückkehrt. waitForNewConnection() ist vor allem dann nützlich, wenn keine Ereignisschleife verfügbar ist.

Die nicht blockierende Alternative besteht darin, sich an das Signal „ newConnection()“ anzuhängen.

Ist `msec` gleich -1, läuft diese Funktion nicht ab.

Siehe auch ` hasPendingConnections()` und ` 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.