QLocalSocket Class
Die Klasse „QLocalSocket“ stellt einen lokalen Socket bereit. Mehr dazu...
| Header: | #include <QLocalSocket> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| Erbt von: | QIODevice |
Öffentliche Typen
| enum | LocalSocketError { ConnectionRefusedError, PeerClosedError, ServerNotFoundError, SocketAccessError, SocketResourceError, …, UnknownSocketError } |
| enum | LocalSocketState { UnconnectedState, ConnectingState, ConnectedState, ClosingState } |
(since 6.2) enum | SocketOption { NoOptions, AbstractNamespaceOption } |
| flags | SocketOptions |
Eigenschaften
(since 6.2)socketOptions : SocketOptions
Öffentliche Funktionen
| 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) |
Neu implementierte öffentliche Funktionen
| 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 |
Signale
| void | connected() |
| void | disconnected() |
| void | errorOccurred(QLocalSocket::LocalSocketError socketError) |
| void | stateChanged(QLocalSocket::LocalSocketState socketState) |
Neu implementierte geschützte Funktionen
| 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 |
Ausführliche Beschreibung
Unter Windows handelt es sich hierbei um eine benannte Pipe, unter Unix um einen lokalen Domänen-Socket.
Tritt ein Fehler auf, gibt ` error()` den Fehlertyp zurück, und mit ` errorString()` kann eine für Menschen lesbare Beschreibung des Vorfalls abgerufen werden.
Obwohl QLocalSocket für die Verwendung mit einer Ereignisschleife konzipiert ist, ist es möglich, es auch ohne eine solche zu nutzen. In diesem Fall müssen Sie waitForConnected(), waitForReadyRead(), waitForBytesWritten() und waitForDisconnected() verwenden, wobei letztere Funktion so lange blockiert, bis der Vorgang abgeschlossen ist oder die Zeitüberschreitung abläuft.
Siehe auch QLocalServer.
Dokumentation zu Mitgliedstypen
enum QLocalSocket::LocalSocketError
Die Aufzählung „LocalServerError“ stellt die Fehler dar, die auftreten können. Der zuletzt aufgetretene Fehler kann durch einen Aufruf von ` QLocalSocket::error()` abgerufen werden.
| Konstante | Wert | Beschreibung |
|---|---|---|
QLocalSocket::ConnectionRefusedError | QAbstractSocket::ConnectionRefusedError | Die Verbindung wurde vom Gegenüber abgelehnt (oder es ist eine Zeitüberschreitung aufgetreten). |
QLocalSocket::PeerClosedError | QAbstractSocket::RemoteHostClosedError | Der Remote-Socket hat die Verbindung geschlossen. Beachten Sie, dass der Client-Socket (d. h. dieser Socket) geschlossen wird, nachdem die Benachrichtigung über das Schließen des Remote-Sockets gesendet wurde. |
QLocalSocket::ServerNotFoundError | QAbstractSocket::HostNotFoundError | Der Name des lokalen Sockets wurde nicht gefunden. |
QLocalSocket::SocketAccessError | QAbstractSocket::SocketAccessError | Der Socket-Vorgang schlug fehl, da der Anwendung die erforderlichen Berechtigungen fehlten. |
QLocalSocket::SocketResourceError | QAbstractSocket::SocketResourceError | Dem lokalen System gingen die Ressourcen aus (z. B. zu viele Sockets). |
QLocalSocket::SocketTimeoutError | QAbstractSocket::SocketTimeoutError | Der Socket-Vorgang ist abgelaufen. |
QLocalSocket::DatagramTooLargeError | QAbstractSocket::DatagramTooLargeError | Das Datagramm war größer als das vom Betriebssystem festgelegte Limit (das bis zu 8192 Byte betragen kann). |
QLocalSocket::ConnectionError | QAbstractSocket::NetworkError | Bei der Verbindung ist ein Fehler aufgetreten. |
QLocalSocket::UnsupportedSocketOperationError | QAbstractSocket::UnsupportedSocketOperationError | Der angeforderte Socket-Vorgang wird vom lokalen Betriebssystem nicht unterstützt. |
QLocalSocket::OperationError | QAbstractSocket::OperationError | Es wurde eine Operation versucht, während sich der Socket in einem Zustand befand, der dies nicht zuließ. |
QLocalSocket::UnknownSocketError | QAbstractSocket::UnknownSocketError | Es ist ein nicht identifizierter Fehler aufgetreten. |
enum QLocalSocket::LocalSocketState
Diese Enumeration beschreibt die verschiedenen Zustände, in denen sich ein Socket befinden kann.
| Konstante | Wert | Beschreibung |
|---|---|---|
QLocalSocket::UnconnectedState | QAbstractSocket::UnconnectedState | Der Socket ist nicht verbunden. |
QLocalSocket::ConnectingState | QAbstractSocket::ConnectingState | Der Socket hat begonnen, eine Verbindung aufzubauen. |
QLocalSocket::ConnectedState | QAbstractSocket::ConnectedState | Eine Verbindung ist hergestellt. |
QLocalSocket::ClosingState | QAbstractSocket::ClosingState | Der Socket steht kurz vor dem Schließen (möglicherweise stehen noch Daten zum Schreiben an). |
Siehe auch ` QLocalSocket::state()`.
[since 6.2] enum QLocalSocket::SocketOption
flags QLocalSocket::SocketOptions
Diese Enumeration beschreibt die möglichen Optionen, die für die Verbindung zu einem Server verwendet werden können. Derzeit wird sie unter Linux und Android verwendet, um die Verbindung zu einem Server anzugeben, der auf einen Socket lauscht, der an eine abstrakte Adresse gebunden ist.
| Konstante | Wert | Beschreibung |
|---|---|---|
QLocalSocket::NoOptions | 0x00 | Es wurden keine Optionen festgelegt. |
QLocalSocket::AbstractNamespaceOption | 0x01 | Der Socket versucht, eine Verbindung zu einer abstrakten Adresse herzustellen. Dieses Flag ist spezifisch für Linux und Android. Auf anderen Plattformen wird es ignoriert. |
Diese Enumeration wurde in Qt 6.2 eingeführt.
Der Typ `SocketOptions` ist ein `typedef` für ` QFlags<SocketOption>`. Er speichert eine ODER-Kombination von `SocketOption`-Werten.
Siehe auch „ socketOptions “.
Dokumentation zur Eigenschaft
[bindable, since 6.2] socketOptions : SocketOptions
Hinweis: Diese Eigenschaft unterstützt „ QProperty “-Bindungen.
Diese Eigenschaft enthält die Socket-Optionen.
Die Optionen müssen festgelegt werden, während sich der Socket im Status „ UnconnectedState “ befindet.
Diese Aufzählung wurde in Qt 6.2 eingeführt.
Zugriffsfunktionen:
| QLocalSocket::SocketOptions | socketOptions() const |
| void | setSocketOptions(QLocalSocket::SocketOptions option) |
Siehe auch ` connectToServer()`.
Dokumentation zu den Mitgliedsfunktionen
QLocalSocket::QLocalSocket(QObject *parent = nullptr)
Erstellt einen neuen lokalen Socket. Das Argument „ parent “ wird an den Konstruktor von „ QObject “ übergeben.
[virtual noexcept] QLocalSocket::~QLocalSocket()
Löscht den Socket und schließt gegebenenfalls die Verbindung.
void QLocalSocket::abort()
Beendet die aktuelle Verbindung und setzt den Socket zurück. Im Gegensatz zu ` disconnectFromServer()` schließt diese Funktion den Socket sofort und löscht dabei alle im Schreibpuffer befindlichen Daten.
Siehe auch ` disconnectFromServer()` und ` close()`.
[override virtual] qint64 QLocalSocket::bytesAvailable() const
Implementiert: ` QIODevice::bytesAvailable()` const.
[override virtual] qint64 QLocalSocket::bytesToWrite() const
Implementiert neu: ` QIODevice::bytesToWrite()` const.
[override virtual] bool QLocalSocket::canReadLine() const
Implementiert: ` QIODevice::canReadLine()` const.
[override virtual] void QLocalSocket::close()
Implementiert: ` QIODevice::close()`.
Schließt das E/A-Gerät für den Socket und ruft disconnectFromServer() auf, um die Verbindung des Sockets zu schließen.
Eine Beschreibung der Aktionen, die beim Schließen eines E/A-Geräts erfolgen, finden Sie unter QIODevice::close().
Siehe auch abort().
void QLocalSocket::connectToServer(QIODeviceBase::OpenMode openMode = ReadWrite)
Es wird versucht, eine Verbindung zu serverName() herzustellen. setServerName() muss aufgerufen werden, bevor Sie die Verbindung öffnen. Alternativ können Sie connectToServer(const QString &name, OpenMode openMode) verwenden;
Der Socket wird im angegebenen openMode geöffnet und wechselt zunächst in den Modus ConnectingState. Wenn eine Verbindung hergestellt wurde, wechselt QLocalSocket in den Modus ConnectedState und sendet connected().
Nach dem Aufruf dieser Funktion kann der Socket errorOccurred() auslösen, um zu signalisieren, dass ein Fehler aufgetreten ist.
Siehe auch state(), serverName() und waitForConnected().
void QLocalSocket::connectToServer(const QString &name, QIODeviceBase::OpenMode openMode = ReadWrite)
Legt die Server- name fest und versucht, eine Verbindung zu diesem Server herzustellen.
Der Socket wird unter der angegebenen openMode geöffnet und ruft zunächst ConnectingState auf. Wenn eine Verbindung hergestellt wurde, ruft QLocalSocket ConnectedState auf und gibt connected() aus.
Nach dem Aufruf dieser Funktion kann der Socket errorOccurred() ausgeben, um zu signalisieren, dass ein Fehler aufgetreten ist.
Dies ist eine überladene Funktion.
Siehe auch state(), serverName() und waitForConnected().
[signal] void QLocalSocket::connected()
Dieses Signal wird ausgelöst, nachdem connectToServer() aufgerufen wurde und eine Verbindung erfolgreich hergestellt wurde.
Siehe auch connectToServer() und disconnected().
void QLocalSocket::disconnectFromServer()
Versucht, den Socket zu schließen. Wenn noch Daten zum Schreiben anstehen, wechselt „ QLocalSocket “ in den Zustand „ ClosingState “ und wartet, bis alle Daten geschrieben wurden. Schließlich wechselt es in den Zustand „ UnconnectedState “ und sendet das Signal „ disconnected()“.
Siehe auch connectToServer().
[signal] void QLocalSocket::disconnected()
Dieses Signal wird ausgegeben, wenn die Verbindung zum Socket getrennt wurde.
Siehe auch connectToServer(), disconnectFromServer(), abort() und connected().
QLocalSocket::LocalSocketError QLocalSocket::error() const
Gibt den Typ des zuletzt aufgetretenen Fehlers zurück.
Siehe auch „ state()“ und „ errorString()“.
[signal] void QLocalSocket::errorOccurred(QLocalSocket::LocalSocketError socketError)
Dieses Signal wird ausgegeben, nachdem ein Fehler aufgetreten ist. Der Parameter „ socketError “ beschreibt die Art des aufgetretenen Fehlers.
Siehe auch „ error()“ und „ errorString()“.
bool QLocalSocket::flush()
Diese Funktion schreibt so viel wie möglich aus dem internen Schreibpuffer in den Socket, ohne zu blockieren. Wenn Daten geschrieben wurden, gibt diese Funktion „ true “ zurück; andernfalls wird „false“ zurückgegeben.
Rufen Sie diese Funktion auf, wenn Sie „ QLocalSocket “ benötigen, um sofort mit dem Senden der gepufferten Daten zu beginnen. Die Anzahl der erfolgreich geschriebenen Bytes hängt vom Betriebssystem ab. In den meisten Fällen müssen Sie diese Funktion nicht aufrufen, da „ QLocalSocket “ automatisch mit dem Senden der Daten beginnt, sobald die Kontrolle wieder an die Ereignisschleife zurückgegeben wird. Wenn keine Ereignisschleife vorhanden ist, rufen Sie stattdessen „ waitForBytesWritten()“ auf.
Siehe auch „ write()“ und „ waitForBytesWritten()“.
QString QLocalSocket::fullServerName() const
Gibt den Serverpfad zurück, mit dem der Socket verbunden ist.
Hinweis: Der Rückgabewert dieser Funktion ist plattformabhängig.
Siehe auch connectToServer() und serverName().
[override virtual] bool QLocalSocket::isSequential() const
Implementiert: ` QIODevice::isSequential()` const.
bool QLocalSocket::isValid() const
Gibt „ true “ zurück, wenn der Socket gültig und einsatzbereit ist; andernfalls wird „ false “ zurückgegeben.
Hinweis: Der Status des Sockets muss „ ConnectedState “ sein, bevor Lese- und Schreibvorgänge stattfinden können.
Siehe auch state() und connectToServer().
[override virtual] bool QLocalSocket::open(QIODeviceBase::OpenMode openMode = ReadWrite)
Implementiert: ` QIODevice::open` (Modus `QIODeviceBase::OpenMode`).
Entspricht connectToServer(OpenMode-Modus). Der Socket wird im angegebenen openMode zum Server geöffnet, der durch setServerName() definiert ist.
Beachten Sie, dass im Gegensatz zu den meisten anderen Unterklassen von ` QIODevice ` die Funktion `open()` das Gerät möglicherweise nicht direkt öffnet. Die Funktion gibt `false` zurück, wenn der Socket bereits verbunden war oder wenn der Server, mit dem eine Verbindung hergestellt werden soll, nicht definiert wurde, und in allen anderen Fällen `true`. Die Signale ` connected()` oder ` errorOccurred()` werden ausgelöst, sobald das Gerät tatsächlich geöffnet ist (oder die Verbindung fehlgeschlagen ist).
Weitere Details finden Sie unter „ connectToServer()“.
qint64 QLocalSocket::readBufferSize() const
Gibt die Größe des internen Lesepuffers zurück. Diese begrenzt die Datenmenge, die der Client empfangen kann, bevor Sie die Funktionen „ read()“ oder „ readAll()“ aufrufen. Eine Lesepuffergröße von 0 (Standard) bedeutet, dass der Puffer keine Größenbeschränkung hat, wodurch sichergestellt wird, dass keine Daten verloren gehen.
Siehe auch ` setReadBufferSize()` und ` read()`.
[override virtual protected] qint64 QLocalSocket::readData(char *data, qint64 c)
Implementiert: ` QIODevice::readData` (char *data, qint64 maxSize).
[override virtual protected] qint64 QLocalSocket::readLineData(char *data, qint64 maxSize)
Implementiert: QIODevice::readLineData(char *data, qint64 maxSize).
QString QLocalSocket::serverName() const
Gibt den Namen des Peers zurück, wie er durch setServerName() angegeben wurde, oder ein leeres QString, falls setServerName() nicht aufgerufen wurde oder connectToServer() fehlgeschlagen ist.
Siehe auch setServerName(), connectToServer() und fullServerName().
void QLocalSocket::setReadBufferSize(qint64 size)
Legt die Größe des internen Lesepuffers von „ QLocalSocket “ auf „ size “ Bytes fest.
Wenn die Puffergröße auf einen bestimmten Wert begrenzt ist, puffert „ QLocalSocket “ nicht mehr Daten als diese Größe. Eine Puffergröße von 0 bedeutet jedoch, dass der Lesepuffer unbegrenzt ist und alle eingehenden Daten gepuffert werden. Dies ist die Standardeinstellung.
Diese Option ist nützlich, wenn Sie die Daten nur zu bestimmten Zeitpunkten lesen (z. B. in einer Echtzeit-Streaming-Anwendung) oder wenn Sie Ihren Socket davor schützen möchten, zu viele Daten zu empfangen, was letztendlich dazu führen könnte, dass Ihrer Anwendung der Speicher ausgeht.
Siehe auch readBufferSize() und read().
void QLocalSocket::setServerName(const QString &name)
Legen Sie den „ name “ des Peers fest, mit dem eine Verbindung hergestellt werden soll. Unter Windows ist „name“ der Name einer benannten Pipe; unter Unix ist „name“ der Name eines lokalen Domänen-Sockets.
Diese Funktion muss aufgerufen werden, wenn der Socket nicht verbunden ist.
Siehe auch serverName().
bool QLocalSocket::setSocketDescriptor(qintptr socketDescriptor, QLocalSocket::LocalSocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite)
Initialisiert „ QLocalSocket “ mit dem nativen Socket-Deskriptor „ socketDescriptor “. Gibt „ true “ zurück, wenn „ socketDescriptor “ als gültiger Socket-Deskriptor akzeptiert wird; andernfalls wird „ false “ zurückgegeben. Der Socket wird in dem durch „ openMode “ angegebenen Modus geöffnet und wechselt in den durch „ socketState “ angegebenen Socket-Zustand.
Hinweis: Es ist nicht möglich, zwei lokale Sockets mit demselben nativen Socket-Deskriptor zu initialisieren.
Siehe auch socketDescriptor(), state() und openMode().
[override virtual protected] qint64 QLocalSocket::skipData(qint64 maxSize)
Implementiert: QIODevice::skipData(qint64 maxSize).
qintptr QLocalSocket::socketDescriptor() const
Gibt den nativen Socket-Deskriptor des Objekts „ QLocalSocket “ zurück, sofern dieser verfügbar ist; andernfalls wird -1 zurückgegeben.
Der Socket-Deskriptor ist nicht verfügbar, wenn sich „ QLocalSocket “ im Status „ UnconnectedState “ befindet. 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 „ QTcpSocket “-Socket-Deskriptor, und der Typ wird durch „ socketDescriptor “ definiert.
- Auf allen anderen UNIX-ähnlichen Betriebssystemen ist der Typ ein Dateideskriptor, der einen Socket darstellt.
Siehe auch setSocketDescriptor().
QLocalSocket::LocalSocketState QLocalSocket::state() const
Gibt den Status des Sockets zurück.
Siehe auch ` error()`.
[signal] void QLocalSocket::stateChanged(QLocalSocket::LocalSocketState socketState)
Dieses Signal wird immer dann ausgelöst, wenn sich der Zustand von „ QLocalSocket “ ändert. Der Parameter „ socketState “ gibt den neuen Zustand an.
Siehe auch state().
[override virtual] bool QLocalSocket::waitForBytesWritten(int msecs = 30000)
Implementiert: QIODevice::waitForBytesWritten(int msecs).
bool QLocalSocket::waitForConnected(int msecs = 30000)
Wartet, bis die Verbindung zum Socket hergestellt ist, maximal msecs Millisekunden. Wenn die Verbindung hergestellt wurde, gibt diese Funktion „ true “ zurück; andernfalls gibt sie „ false “ zurück. Falls „ false “ zurückgegeben wird, können Sie „ error()“ aufrufen, um die Ursache des Fehlers zu ermitteln.
Das folgende Beispiel wartet bis zu einer Sekunde, bis eine Verbindung hergestellt ist:
socket->connectToServer("market");
if (socket->waitForConnected(1000))
qDebug("Connected!");Wenn msecs den Wert -1 hat, läuft diese Funktion nicht in eine Zeitüberschreitung.
Siehe auch „ connectToServer()“ und „ connected()“.
bool QLocalSocket::waitForDisconnected(int msecs = 30000)
Wartet, bis die Verbindung zum Socket getrennt wurde, maximal msecs Millisekunden. Wenn die Verbindung erfolgreich getrennt wurde, gibt diese Funktion true zurück; andernfalls gibt sie false zurück (wenn das Zeitlimit abgelaufen ist, ein Fehler aufgetreten ist oder wenn dieses QLocalSocket bereits getrennt ist). Falls false zurückgegeben wird, können Sie error() aufrufen, um die Ursache des Fehlers zu ermitteln.
Das folgende Beispiel wartet bis zu einer Sekunde darauf, dass eine Verbindung geschlossen wird:
socket->disconnectFromServer();
if (socket->state()== QLocalSocket::UnconnectedState
|| socket->waitForDisconnected(1000)) {
qDebug("Disconnected!");
}Wenn msecs den Wert -1 hat, läuft diese Funktion nicht ab.
Siehe auch disconnectFromServer() und close().
[override virtual] bool QLocalSocket::waitForReadyRead(int msecs = 30000)
Umsetzung von: ` QIODevice::waitForReadyRead(int msecs)`.
Diese Funktion wartet, bis Daten zum Lesen verfügbar sind und das Signal „ readyRead()“ ausgelöst wurde. Die Funktion läuft nach msecs Millisekunden ab; die Standard-Timeout-Zeit beträgt 30000 Millisekunden.
Die Funktion gibt „ true “ zurück, wenn Daten zum Lesen verfügbar sind; andernfalls gibt sie „ false “ zurück (wenn ein Fehler aufgetreten ist oder die Operation abgelaufen ist).
Siehe auch ` waitForBytesWritten()`.
[override virtual protected] qint64 QLocalSocket::writeData(const char *data, qint64 c)
Implementiert: ` 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.