QLocalSocket Class
Die Klasse QLocalSocket stellt einen lokalen Socket zur Verfügung. Mehr...
Kopfzeile: | #include <QLocalSocket> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
Vererbt: | 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) |
Reimplementierte ö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) |
Reimplementierte 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 |
Detaillierte Beschreibung
Unter Windows ist dies eine benannte Pipe und unter Unix ein lokaler Domain-Socket.
Wenn ein Fehler auftritt, gibt error() die Art des Fehlers zurück, und errorString() kann aufgerufen werden, um eine menschenlesbare Beschreibung des Geschehens zu erhalten.
Obwohl QLocalSocket für die Verwendung mit einer Ereignisschleife konzipiert ist, ist es möglich, es ohne eine solche zu verwenden. In diesem Fall müssen Sie waitForConnected(), waitForReadyRead(), waitForBytesWritten() und waitForDisconnected() verwenden, die blockieren, bis die Operation abgeschlossen ist oder der Timeout abläuft.
Siehe auch QLocalServer.
Dokumentation der Mitgliedstypen
enum QLocalSocket::LocalSocketError
Die Aufzählung LocalServerError stellt die Fehler dar, die auftreten können. Der letzte Fehler kann durch einen Aufruf von QLocalSocket::error() abgefragt werden.
Konstante | Wert | Beschreibung |
---|---|---|
QLocalSocket::ConnectionRefusedError | QAbstractSocket::ConnectionRefusedError | Die Verbindung wurde von der Gegenstelle abgelehnt (oder die Zeit wurde überschritten). |
QLocalSocket::PeerClosedError | QAbstractSocket::RemoteHostClosedError | Der entfernte Socket hat die Verbindung geschlossen. Beachten Sie, dass der Client-Socket (d. h. dieser Socket) geschlossen wird, nachdem die Remote-Close-Benachrichtigung gesendet wurde. |
QLocalSocket::ServerNotFoundError | QAbstractSocket::HostNotFoundError | Der lokale Socket-Name wurde nicht gefunden. |
QLocalSocket::SocketAccessError | QAbstractSocket::SocketAccessError | Die Socket-Operation ist fehlgeschlagen, weil die Anwendung nicht über die erforderlichen Berechtigungen verfügte. |
QLocalSocket::SocketResourceError | QAbstractSocket::SocketResourceError | Dem lokalen System sind die Ressourcen ausgegangen (z.B. zu viele Sockets). |
QLocalSocket::SocketTimeoutError | QAbstractSocket::SocketTimeoutError | Die Socket-Operation hat eine Zeitüberschreitung verursacht. |
QLocalSocket::DatagramTooLargeError | QAbstractSocket::DatagramTooLargeError | Das Datagramm war größer als das Limit des Betriebssystems (das bis zu 8192 Bytes betragen kann). |
QLocalSocket::ConnectionError | QAbstractSocket::NetworkError | Bei der Verbindung ist ein Fehler aufgetreten. |
QLocalSocket::UnsupportedSocketOperationError | QAbstractSocket::UnsupportedSocketOperationError | Die angeforderte Socket-Operation wird vom lokalen Betriebssystem nicht unterstützt. |
QLocalSocket::OperationError | QAbstractSocket::OperationError | Ein Vorgang wurde versucht, während sich der Socket in einem Zustand befand, der ihn nicht zuließ. |
QLocalSocket::UnknownSocketError | QAbstractSocket::UnknownSocketError | Ein nicht identifizierter Fehler ist aufgetreten. |
enum QLocalSocket::LocalSocketState
Diese Aufzählung 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 aufgebaut. |
QLocalSocket::ClosingState | QAbstractSocket::ClosingState | Der Socket ist im Begriff, sich zu schließen (möglicherweise warten noch Daten darauf, geschrieben zu werden). |
Siehe auch QLocalSocket::state().
[since 6.2]
enum QLocalSocket::SocketOption
flags QLocalSocket::SocketOptions
Diese Aufzählung beschreibt die möglichen Optionen, die verwendet werden können, um eine Verbindung zu einem Server herzustellen. Derzeit wird es unter Linux und Android verwendet, um die Verbindung zu einem Server zu spezifizieren, der auf einen Socket hört, der an eine abstrakte Adresse gebunden ist.
Konstante | Wert | Beschreibung |
---|---|---|
QLocalSocket::NoOptions | 0x00 | Es wurden keine Optionen gesetzt. |
QLocalSocket::AbstractNamespaceOption | 0x01 | Der Socket wird versuchen, eine Verbindung zu einer abstrakten Adresse herzustellen. Dieses Flag ist spezifisch für Linux und Android. Auf anderen Plattformen wird es ignoriert. |
Dieses Enum wurde in Qt 6.2 eingeführt.
Der Typ SocketOptions ist ein Typedef für QFlags<SocketOption>. Er speichert eine OR-Kombination von SocketOption-Werten.
Siehe auch socketOptions.
Dokumentation der Eigenschaften
[bindable, since 6.2]
socketOptions : SocketOptions
Hinweis: Diese Eigenschaft unterstützt QProperty Bindungen.
Diese Eigenschaft enthält die Socket-Optionen.
Die Optionen müssen gesetzt werden, während sich der Socket im Zustand UnconnectedState befindet.
Diese Eigenschaft wurde in Qt 6.2 eingeführt.
Siehe auch connectToServer().
Dokumentation der Mitgliedsfunktionen
QLocalSocket::QLocalSocket(QObject *parent = nullptr)
Erzeugt einen neuen lokalen Socket. Das Argument parent wird an den Konstruktor von QObject übergeben.
[virtual noexcept]
QLocalSocket::~QLocalSocket()
Zerstört den Socket und schließt die Verbindung, falls erforderlich.
void QLocalSocket::abort()
Bricht die aktuelle Verbindung ab und setzt den Socket zurück. Im Gegensatz zu disconnectFromServer() schließt diese Funktion den Socket sofort und löscht alle anstehenden Daten im Schreibpuffer.
Siehe auch disconnectFromServer() und close().
[override virtual]
qint64 QLocalSocket::bytesAvailable() const
Reimplements: QIODevice::bytesAvailable() const.
[override virtual]
qint64 QLocalSocket::bytesToWrite() const
Reimplements: QIODevice::bytesToWrite() const.
[override virtual]
bool QLocalSocket::canReadLine() const
Reimplements: QIODevice::canReadLine() const.
[override virtual]
void QLocalSocket::close()
Reimplements: 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.
Siehe QIODevice::close() für eine Beschreibung der Aktionen, die auftreten, wenn ein E/A-Gerät geschlossen wird.
Siehe auch abort().
void QLocalSocket::connectToServer(QIODeviceBase::OpenMode openMode = ReadWrite)
Versucht, eine Verbindung zu serverName() herzustellen. setServerName() muss aufgerufen werden, bevor Sie die Verbindung öffnen. Alternativ können Sie auch connectToServer(const QString &name, OpenMode openMode) verwenden;
Der Socket wird im angegebenen openMode geöffnet und betritt zunächst ConnectingState. Wenn eine Verbindung hergestellt wird, geht QLocalSocket in ConnectedState ein und sendet connected().
Nach dem Aufruf dieser Funktion kann der Socket errorOccurred() ausgeben, um zu signalisieren, dass ein Fehler aufgetreten ist.
Siehe auch state(), serverName(), und waitForConnected().
void QLocalSocket::connectToServer(const QString &name, QIODeviceBase::OpenMode openMode = ReadWrite)
Dies ist eine überladene Funktion.
Setzt den Server name und versucht, eine Verbindung zu ihm herzustellen.
Der Socket wird im angegebenen openMode geöffnet und geht zunächst in ConnectingState ein. Wenn eine Verbindung zustande kommt, geht QLocalSocket in ConnectedState und sendet connected().
Nach dem Aufruf dieser Funktion kann der Socket errorOccurred() ausgeben, um zu signalisieren, dass ein Fehler aufgetreten ist.
Siehe auch state(), serverName(), und waitForConnected().
[signal]
void QLocalSocket::connected()
Dieses Signal wird ausgegeben, nachdem connectToServer() aufgerufen wurde und eine Verbindung erfolgreich aufgebaut wurde.
Siehe auch connectToServer() und disconnected().
void QLocalSocket::disconnectFromServer()
Versucht, den Socket zu schließen. Wenn noch Daten darauf warten, geschrieben zu werden, wechselt QLocalSocket zu ClosingState und wartet, bis alle Daten geschrieben worden sind. Schließlich geht es in UnconnectedState über und gibt das Signal disconnected() aus.
Siehe auch connectToServer().
[signal]
void QLocalSocket::disconnected()
Dieses Signal wird ausgegeben, wenn die Verbindung zum Socket unterbrochen 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, wenn ein Fehler aufgetreten ist. Der Parameter socketError beschreibt den Typ des aufgetretenen Fehlers.
QLocalSocket::LocalSocketError ist kein registrierter Metatyp, daher müssen Sie ihn für Warteschlangenverbindungen mit Q_DECLARE_METATYPE() und qRegisterMetaType() registrieren.
Siehe auch error(), errorString(), und Erstellen von benutzerdefinierten Qt-Typen.
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 von 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 an die Ereignisschleife zurückgeht. 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
Reimplements: 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 Zustand des Sockets muss ConnectedState sein, bevor gelesen und geschrieben werden kann.
Siehe auch state() und connectToServer().
[override virtual]
bool QLocalSocket::open(QIODeviceBase::OpenMode openMode = ReadWrite)
Reimplements: QIODevice::open(QIODeviceBase::OpenMode-Modus).
Äquivalent zu connectToServer(OpenMode-Modus). Der Socket wird im angegebenen openMode für den durch setServerName() definierten Server geöffnet.
Beachten Sie, dass open() im Gegensatz zu den meisten anderen QIODevice Unterklassen das Gerät nicht direkt öffnen darf. Die Funktion gibt false zurück, wenn der Socket bereits verbunden war oder wenn der zu verbindende Server nicht definiert wurde, und true in allen anderen Fällen. Die Signale connected() oder errorOccurred() werden ausgegeben, sobald das Gerät tatsächlich geöffnet ist (oder die Verbindung fehlgeschlagen ist).
Siehe connectToServer() für weitere Details.
qint64 QLocalSocket::readBufferSize() const
Gibt die Größe des internen Lesepuffers zurück. Damit wird die Datenmenge begrenzt, die der Client empfangen kann, bevor Sie read() oder readAll() aufrufen. Eine Lesepuffergröße von 0 (die Voreinstellung) bedeutet, dass der Puffer keine Größenbegrenzung hat, wodurch sichergestellt wird, dass keine Daten verloren gehen.
Siehe auch setReadBufferSize() und read().
[override virtual protected]
qint64 QLocalSocket::readData(char *data, qint64 c)
Reimplements: QIODevice::readData(char *data, qint64 maxSize).
[override virtual protected]
qint64 QLocalSocket::readLineData(char *data, qint64 maxSize)
Reimplements: QIODevice::readLineData(char *data, qint64 maxSize).
QString QLocalSocket::serverName() const
Gibt den Namen der Gegenstelle zurück, wie in setServerName() angegeben, oder ein leeres QString, wenn setServerName() nicht aufgerufen wurde oder connectToServer() fehlgeschlagen ist.
Siehe auch setServerName(), connectToServer(), und fullServerName().
void QLocalSocket::setReadBufferSize(qint64 size)
Setzt die Größe des internen Lesepuffers von QLocalSocket auf size Bytes.
Wenn die Puffergröße auf eine bestimmte Größe begrenzt ist, wird QLocalSocket nicht mehr als diese Datenmenge puffern. Ausnahmsweise bedeutet eine Puffergröße von 0, 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 Ihr Socket davor schützen wollen, zu viele Daten zu empfangen, was dazu führen könnte, dass Ihrer Anwendung der Speicher ausgeht.
Siehe auch readBufferSize() und read().
void QLocalSocket::setServerName(const QString &name)
Legen Sie die name der Gegenstelle fest, zu der eine Verbindung hergestellt werden soll. Unter Windows ist name der Name einer benannten Pipe; unter Unix ist name der Name eines lokalen Domain-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 geht in den durch socketState angegebenen Socket-Status über.
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)
Reimplements: QIODevice::skipData(qint64 maxSize).
qintptr QLocalSocket::socketDescriptor() const
Gibt den nativen Socket-Deskriptor des QLocalSocket -Objekts zurück, wenn dieser verfügbar ist; andernfalls wird -1 zurückgegeben.
Der Socket-Deskriptor ist nicht verfügbar, wenn QLocalSocket in UnconnectedState ist. Der Typ des Deskriptors hängt von der Plattform ab:
- Unter Windows ist der zurückgegebene Wert ein Winsock 2 Socket Handle.
- Auf INTEGRITY ist der zurückgegebene Wert 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 Zustand des Sockets zurück.
Siehe auch error().
[signal]
void QLocalSocket::stateChanged(QLocalSocket::LocalSocketState socketState)
Dieses Signal wird ausgesendet, wenn sich der Zustand von QLocalSocket ändert. Der Parameter socketState ist der neue Zustand.
QLocalSocket::SocketState ist kein registrierter Metatyp, daher müssen Sie ihn für Warteschlangenverbindungen mit Q_DECLARE_METATYPE() und qRegisterMetaType() registrieren.
Siehe auch state() und Benutzerdefinierte Qt-Typen erstellen.
[override virtual]
bool QLocalSocket::waitForBytesWritten(int msecs = 30000)
Reimplements: QIODevice::waitForBytesWritten(int msecs).
bool QLocalSocket::waitForConnected(int msecs = 30000)
Wartet, bis der Socket verbunden ist, bis zu msecs Millisekunden. Wenn die Verbindung hergestellt wurde, gibt diese Funktion true
zurück, andernfalls false
. 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 aufgebaut ist:
socket->connectToServer("market");if (socket->waitForConnected(1000)) qDebug("Connected!");
Wenn msecs -1 ist, wird diese Funktion nicht abgebrochen.
Siehe auch connectToServer() und connected().
bool QLocalSocket::waitForDisconnected(int msecs = 30000)
Wartet, bis der Socket die Verbindung getrennt hat, bis zu msecs Millisekunden. Wenn die Verbindung erfolgreich getrennt wurde, gibt diese Funktion true
zurück, andernfalls false
(wenn der Vorgang eine Zeitüberschreitung hatte, ein Fehler auftrat oder die QLocalSocket bereits getrennt wurde). Wenn false
zurückgegeben wird, können Sie error() aufrufen, um die Ursache des Fehlers zu ermitteln.
Im folgenden Beispiel wird bis zu einer Sekunde gewartet, bis eine Verbindung geschlossen wird:
socket->disconnectFromServer();if (socket->state() == QLocalSocket::UnconnectedState || socket->waitForDisconnected(1000)) { qDebug("Disconnected!"); }
Wenn msecs -1 ist, wird diese Funktion nicht abgebrochen.
Siehe auch disconnectFromServer() und close().
[override virtual]
bool QLocalSocket::waitForReadyRead(int msecs = 30000)
Reimplements: QIODevice::waitForReadyRead(int msecs).
Diese Funktion blockiert, bis Daten zum Lesen verfügbar sind und das Signal readyRead() ausgegeben wurde. Die Funktion führt nach msecs Millisekunden eine Zeitüberschreitung durch; die Standardzeitüberschreitung 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 der Vorgang eine Zeitüberschreitung hatte).
Siehe auch waitForBytesWritten().
[override virtual protected]
qint64 QLocalSocket::writeData(const char *data, qint64 c)
Reimplements: 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.