Auf dieser Seite

QAbstractSocket Class

Die Klasse `QAbstractSocket` stellt die Basisfunktionalität bereit, die allen Socket-Typen gemeinsam ist. Mehr...

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

QTcpSocket und QUdpSocket

Hinweis: Alle Funktionen dieser Klasse sind reentrant.

Öffentliche Typen

enum BindFlag { ShareAddress, DontShareAddress, ReuseAddressHint, DefaultForPlatform }
flags BindMode
enum NetworkLayerProtocol { IPv4Protocol, IPv6Protocol, AnyIPProtocol, UnknownNetworkLayerProtocol }
enum PauseMode { PauseNever, PauseOnSslErrors }
flags PauseModes
enum SocketError { ConnectionRefusedError, RemoteHostClosedError, HostNotFoundError, SocketAccessError, SocketResourceError, …, UnknownSocketError }
enum SocketOption { LowDelayOption, KeepAliveOption, MulticastTtlOption, MulticastLoopbackOption, TypeOfServiceOption, …, KeepAliveCountOption }
enum SocketState { UnconnectedState, HostLookupState, ConnectingState, ConnectedState, BoundState, …, ListeningState }
enum SocketType { TcpSocket, UdpSocket, SctpSocket, UnknownSocketType }

Öffentliche Funktionen

QAbstractSocket(QAbstractSocket::SocketType socketType, QObject *parent)
virtual ~QAbstractSocket()
void abort()
virtual bool bind(const QHostAddress &address, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)
bool bind(quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)
(since 6.2) bool bind(QHostAddress::SpecialAddress addr, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)
virtual void connectToHost(const QString &hostName, quint16 port, QIODeviceBase::OpenMode openMode = ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol)
void connectToHost(const QHostAddress &address, quint16 port, QIODeviceBase::OpenMode openMode = ReadWrite)
virtual void disconnectFromHost()
QAbstractSocket::SocketError error() const
bool flush()
bool isValid() const
QHostAddress localAddress() const
quint16 localPort() const
QAbstractSocket::PauseModes pauseMode() const
QHostAddress peerAddress() const
QString peerName() const
quint16 peerPort() const
QString protocolTag() const
QNetworkProxy proxy() const
qint64 readBufferSize() const
virtual void resume()
void setPauseMode(QAbstractSocket::PauseModes pauseMode)
void setProtocolTag(const QString &tag)
void setProxy(const QNetworkProxy &networkProxy)
virtual void setReadBufferSize(qint64 size)
virtual bool setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite)
virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)
virtual qintptr socketDescriptor() const
virtual QVariant socketOption(QAbstractSocket::SocketOption option)
QAbstractSocket::SocketType socketType() const
QAbstractSocket::SocketState state() const
virtual bool waitForConnected(int msecs = 30000)
virtual bool waitForDisconnected(int msecs = 30000)

Neu implementierte öffentliche Funktionen

virtual qint64 bytesAvailable() const override
virtual qint64 bytesToWrite() const override
virtual void close() override
virtual bool isSequential() const override
virtual bool waitForBytesWritten(int msecs = 30000) override
virtual bool waitForReadyRead(int msecs = 30000) override

Signale

void connected()
void disconnected()
void errorOccurred(QAbstractSocket::SocketError socketError)
void hostFound()
void proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)
void stateChanged(QAbstractSocket::SocketState socketState)

Geschützte Funktionen

void setLocalAddress(const QHostAddress &address)
void setLocalPort(quint16 port)
void setPeerAddress(const QHostAddress &address)
void setPeerName(const QString &name)
void setPeerPort(quint16 port)
void setSocketError(QAbstractSocket::SocketError socketError)
void setSocketState(QAbstractSocket::SocketState state)

Neu implementierte geschützte Funktionen

virtual qint64 readData(char *data, qint64 maxSize) override
virtual qint64 readLineData(char *data, qint64 maxlen) override
virtual qint64 skipData(qint64 maxSize) override
virtual qint64 writeData(const char *data, qint64 size) override

Ausführliche Beschreibung

QAbstractSocket ist die Basisklasse für QTcpSocket und QUdpSocket und enthält alle gemeinsamen Funktionen dieser beiden Klassen. Wenn Sie einen Socket benötigen, haben Sie zwei Möglichkeiten:

  • QTcpSocket oder QUdpSocket instanziieren.
  • Erstellen Sie einen nativen Socket-Deskriptor, instanziieren Sie `QAbstractSocket` und rufen Sie ` setSocketDescriptor()` auf, um den nativen Socket zu verpacken.

TCP (Transmission Control Protocol) ist ein zuverlässiges, stromorientiertes und verbindungsorientiertes Transportprotokoll. UDP (User Datagram Protocol) ist ein unzuverlässiges, datagrammorientiertes, verbindungsloses Protokoll. In der Praxis bedeutet dies, dass TCP besser für die kontinuierliche Datenübertragung geeignet ist, während das schlankere UDP verwendet werden kann, wenn Zuverlässigkeit keine Rolle spielt.

Die API von `QAbstractSocket` gleicht die meisten Unterschiede zwischen den beiden Protokollen aus. Obwohl UDP beispielsweise verbindungslos ist, baut ` connectToHost()` eine virtuelle Verbindung für UDP-Sockets auf, sodass Sie `QAbstractSocket` unabhängig vom zugrunde liegenden Protokoll mehr oder weniger auf dieselbe Weise verwenden können. Intern speichert `QAbstractSocket` die an ` connectToHost()` übergebenen Adresse und den Port, und Funktionen wie ` read()` und ` write()` verwenden diese Werte.

Zu jedem Zeitpunkt befindet sich QAbstractSocket in einem bestimmten Zustand (der von ` state()` zurückgegeben wird). Der Ausgangszustand ist ` UnconnectedState`. Nach dem Aufruf von ` connectToHost()` wechselt der Socket zunächst in den Zustand ` HostLookupState`. Wird der Host gefunden, wechselt QAbstractSocket in den Zustand ` ConnectingState ` und sendet das Signal ` hostFound()`. Sobald die Verbindung hergestellt ist, wechselt er in den Zustand „ ConnectedState “ und sendet das Signal „ connected()“. Tritt zu irgendeinem Zeitpunkt ein Fehler auf, wird das Signal „ errorOccurred()“ gesendet. Bei jeder Zustandsänderung wird das Signal „ stateChanged()“ gesendet. Der Einfachheit halber gibt „ isValid()“ den Wert „ true “ zurück, wenn der Socket zum Lesen und Schreiben bereit ist. Beachten Sie jedoch, dass sich der Socket im Zustand „ ConnectedState “ befinden muss, bevor Lese- und Schreibvorgänge stattfinden können.

Lesen oder schreiben Sie Daten, indem Sie ` read()` oder ` write()` aufrufen, oder verwenden Sie die Komfortfunktionen ` readLine()` und ` readAll()`. `QAbstractSocket` erbt außerdem ` getChar()`, ` putChar()` und ` ungetChar()` von ` QIODevice`, die mit einzelnen Bytes arbeiten. Das Signal ` bytesWritten()` wird ausgelöst, wenn Daten in den Socket geschrieben wurden. Beachten Sie, dass Qt die Größe des Schreibpuffers nicht begrenzt. Sie können dessen Größe überwachen, indem Sie auf dieses Signal abhören.

Das Signal „ readyRead()“ wird jedes Mal ausgelöst, wenn ein neuer Datenblock eingetroffen ist. „ bytesAvailable()“ gibt dann die Anzahl der Bytes zurück, die zum Lesen verfügbar sind. In der Regel würdest du das Signal „ readyRead()“ mit einem Slot verbinden und dort alle verfügbaren Daten lesen. Wenn Sie nicht alle Daten auf einmal lesen, stehen die verbleibenden Daten später weiterhin zur Verfügung, und alle neu eingehenden Daten werden an den internen Lesepuffer von `QAbstractSocket` angehängt. Um die Größe des Lesepuffers zu begrenzen, rufen Sie ` setReadBufferSize()` auf.

Um den Socket zu schließen, rufen Sie ` disconnectFromHost()` auf. `QAbstractSocket` wechselt in den Zustand „ QAbstractSocket::ClosingState “. Nachdem alle noch ausstehenden Daten in den Socket geschrieben wurden, schließt `QAbstractSocket` den Socket tatsächlich, wechselt in den Zustand „ QAbstractSocket::UnconnectedState “ und gibt ` disconnected()` aus. Wenn Sie eine Verbindung sofort abbrechen und dabei alle ausstehenden Daten verwerfen möchten, rufen Sie stattdessen ` abort()` auf. Wenn der Remote-Host die Verbindung schließt, sendet `QAbstractSocket` das Signal ` errorOccurred` (`QAbstractSocket::RemoteHostClosedError`), währenddessen der Socket-Zustand weiterhin ` ConnectedState` ist; anschließend wird das Signal ` disconnected()` ausgelöst.

Der Port und die Adresse des verbundenen Peers werden durch Aufruf von „ peerPort()“ und „ peerAddress()“ abgerufen. „ peerName()“ gibt den Hostnamen des Peers zurück, wie er an „ connectToHost()“ übergeben wurde. „ localPort()“ und „ localAddress()“ geben den Port und die Adresse des lokalen Sockets zurück.

QAbstractSocket stellt eine Reihe von Funktionen bereit, die den aufrufenden Thread anhalten, bis bestimmte Signale ausgelöst werden. Diese Funktionen können zur Implementierung blockierender Sockets verwendet werden:

Hier ein Beispiel:

    int numRead = 0, numReadTotal = 0;
    char buffer[50];

    forever {
        numRead  = socket.read(buffer, 50);

        // do whatever with array

        numReadTotal += numRead;
        if (numRead == 0 && !socket.waitForReadyRead())
            break;
    }

Wenn „ waitForReadyRead()“ den Wert „ false “ zurückgibt, wurde die Verbindung geschlossen oder es ist ein Fehler aufgetreten.

Die Programmierung mit einem blockierenden Socket unterscheidet sich grundlegend von der Programmierung mit einem nicht-blockierenden Socket. Ein blockierender Socket erfordert keine Ereignisschleife und führt in der Regel zu einfacherem Code. In einer GUI-Anwendung sollten blockierende Sockets jedoch nur in Nicht-GUI-Threads verwendet werden, um ein Einfrieren der Benutzeroberfläche zu vermeiden. Einen Überblick über beide Ansätze bieten die Beispiele „fortuneclient “ und „blockingfortuneclient “.

Hinweis: Wir raten von der Verwendung der blockierenden Funktionen in Verbindung mit Signalen ab. Es sollte eine der beiden Möglichkeiten genutzt werden.

QAbstractSocket kann mit den Stream-Operatoren von QTextStream und QDataStream(operator<<() und operator>>()) verwendet werden. Dabei ist jedoch ein Punkt zu beachten: Sie müssen sicherstellen, dass genügend Daten verfügbar sind, bevor Sie versuchen, diese mit operator>>() zu lesen.

Siehe auch QNetworkAccessManager und QTcpServer.

Dokumentation zu Mitgliedstypen

enum QAbstractSocket::BindFlag
flags QAbstractSocket::BindMode

Diese Enumeration beschreibt die verschiedenen Flags, die Sie übergeben können, um das Verhalten von ` QAbstractSocket::bind()` zu ändern.

KonstanteWertBeschreibung
QAbstractSocket::ShareAddress0x1Erlaubt anderen Diensten, sich an dieselbe Adresse und denselben Port zu binden. Dies ist nützlich, wenn mehrere Prozesse die Last eines einzelnen Dienstes teilen, indem sie auf dieselbe Adresse und denselben Port hören (z. B. kann ein Webserver mit mehreren vorab geforkten Listenern die Antwortzeit erheblich verbessern). Da jedoch jeder Dienst ein Rebind durchführen darf, sind bei dieser Option bestimmte Sicherheitsaspekte zu beachten. Beachten Sie, dass Sie durch die Kombination dieser Option mit `ReuseAddressHint` Ihrem Dienst auch erlauben, ein Rebind auf eine bereits gemeinsam genutzte Adresse durchzuführen. Unter Unix entspricht dies der Socket-Option `SO_REUSEADDR`. Unter Windows ist dies das Standardverhalten, daher wird diese Option ignoriert.
QAbstractSocket::DontShareAddress0x2Binde die Adresse und den Port exklusiv, sodass kein anderer Dienst ein Rebind durchführen darf. Durch die Übergabe dieser Option an ` QAbstractSocket::bind()` wird garantiert, dass bei Erfolg dein Dienst der einzige ist, der auf die Adresse und den Port lauscht. Kein Dienst darf ein Rebind durchführen, selbst wenn er `ReuseAddressHint` übergibt. Diese Option bietet mehr Sicherheit als „ShareAddress“, erfordert jedoch auf bestimmten Betriebssystemen, dass der Server mit Administratorrechten ausgeführt wird. Unter Unix und macOS ist das Nicht-Teilen das Standardverhalten beim Binden einer Adresse und eines Ports, daher wird diese Option ignoriert. Unter Windows verwendet diese Option die Socket-Option „SO_EXCLUSIVEADDRUSE“.
QAbstractSocket::ReuseAddressHint0x4Gibt „ QAbstractSocket “ den Hinweis, dass versucht werden soll, den Dienst neu zu binden, selbst wenn die Adresse und der Port bereits von einem anderen Socket gebunden sind. Unter Windows und Unix entspricht dies der Socket-Option „SO_REUSEADDR“.
QAbstractSocket::DefaultForPlatform0x0Die Standardoption für die aktuelle Plattform. Unter Unix und macOS entspricht dies (DontShareAddress + ReuseAddressHint), unter Windows entspricht es ShareAddress.

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

enum QAbstractSocket::NetworkLayerProtocol

Diese Enumeration beschreibt die in Qt verwendeten Werte für Protokolle der Netzwerkschicht.

KonstanteWertBeschreibung
QAbstractSocket::IPv4Protocol0IPv4
QAbstractSocket::IPv6Protocol1IPv6
QAbstractSocket::AnyIPProtocol2Entweder IPv4 oder IPv6
QAbstractSocket::UnknownNetworkLayerProtocol-1Andere als IPv4 und IPv6

Siehe auch „ QHostAddress::protocol“ ().

enum QAbstractSocket::PauseMode
flags QAbstractSocket::PauseModes

Diese Enumeration beschreibt, wann der Socket die Datenübertragung unterbrechen soll. Derzeit wird ausschließlich die Benachrichtigung „ QSslSocket::sslErrors()“ unterstützt.

KonstanteWertBeschreibung
QAbstractSocket::PauseNever0x0Die Datenübertragung über den Socket wird nicht unterbrochen. Dies ist die Standardeinstellung und entspricht dem Verhalten von Qt 4.
QAbstractSocket::PauseOnSslErrors0x1Die Datenübertragung auf dem Socket wird bei Empfang einer SSL-Fehlerbenachrichtigung angehalten, d. h. bei „ QSslSocket::sslErrors()“.

Der Typ `PauseModes` ist ein `typedef` für ` QFlags<PauseMode>`. Er speichert eine ODER-Verknüpfung von `PauseMode`-Werten.

enum QAbstractSocket::SocketError

Diese Enumeration beschreibt die Socket-Fehler, die auftreten können.

KonstanteWertBeschreibung
QAbstractSocket::ConnectionRefusedError0Die Verbindung wurde vom Gegenüber abgelehnt (oder es ist eine Zeitüberschreitung aufgetreten).
QAbstractSocket::RemoteHostClosedError1Der Remote-Host hat die Verbindung geschlossen. Beachten Sie, dass der Client-Socket (d. h. dieser Socket) geschlossen wird, nachdem die Benachrichtigung über das Schließen durch den Remote-Host gesendet wurde.
QAbstractSocket::HostNotFoundError2Die Host-Adresse wurde nicht gefunden.
QAbstractSocket::SocketAccessError3Der Socket-Vorgang schlug fehl, da der Anwendung die erforderlichen Berechtigungen fehlten.
QAbstractSocket::SocketResourceError4Dem lokalen System gingen die Ressourcen aus (z. B. zu viele Sockets).
QAbstractSocket::SocketTimeoutError5Die Socket-Operation ist abgelaufen.
QAbstractSocket::DatagramTooLargeError6Das Datagramm war größer als das vom Betriebssystem festgelegte Limit (das bis zu 8192 Byte betragen kann).
QAbstractSocket::NetworkError7Es ist ein Netzwerkfehler aufgetreten (z. B. wurde das Netzwerkkabel versehentlich abgezogen).
QAbstractSocket::AddressInUseError8Die in ` QAbstractSocket::bind()` angegebene Adresse ist bereits belegt und wurde als exklusiv festgelegt.
QAbstractSocket::SocketAddressNotAvailableError9Die in ` QAbstractSocket::bind()` angegebene Adresse gehört nicht zum Host.
QAbstractSocket::UnsupportedSocketOperationError10Die angeforderte Socket-Operation wird vom lokalen Betriebssystem nicht unterstützt (z. B. fehlende IPv6-Unterstützung).
QAbstractSocket::ProxyAuthenticationRequiredError12Der Socket nutzt einen Proxy, und der Proxy erfordert eine Authentifizierung.
QAbstractSocket::SslHandshakeFailedError13Der SSL/TLS-Handshake ist fehlgeschlagen, daher wurde die Verbindung geschlossen (wird nur in ` QSslSocket` verwendet)
QAbstractSocket::UnfinishedSocketOperationError11Wird nur von `QAbstractSocketEngine` verwendet. Die zuletzt versuchte Operation ist noch nicht abgeschlossen (läuft im Hintergrund noch).
QAbstractSocket::ProxyConnectionRefusedError14Der Proxy-Server konnte nicht kontaktiert werden, da die Verbindung zu diesem Server verweigert wurde.
QAbstractSocket::ProxyConnectionClosedError15Die Verbindung zum Proxy-Server wurde unerwartet geschlossen (bevor die Verbindung zum endgültigen Peer hergestellt wurde).
QAbstractSocket::ProxyConnectionTimeoutError16Die Verbindung zum Proxy-Server ist abgelaufen oder der Proxy-Server hat während der Authentifizierungsphase nicht mehr geantwortet.
QAbstractSocket::ProxyNotFoundError17Die mit ` setProxy()` festgelegte Proxy-Adresse (oder der Anwendungs-Proxy) wurde nicht gefunden.
QAbstractSocket::ProxyProtocolError18Die Verbindungsverhandlung mit dem Proxy-Server ist fehlgeschlagen, da die Antwort des Proxy-Servers nicht verstanden werden konnte.
QAbstractSocket::OperationError19Es wurde eine Operation versucht, während sich der Socket in einem Zustand befand, der dies nicht zuließ.
QAbstractSocket::SslInternalError20Die verwendete SSL-Bibliothek hat einen internen Fehler gemeldet. Dies ist wahrscheinlich auf eine fehlerhafte Installation oder Konfiguration der Bibliothek zurückzuführen.
QAbstractSocket::SslInvalidUserDataError21Es wurden ungültige Daten (Zertifikat, Schlüssel, Verschlüsselungsalgorithmus usw.) bereitgestellt, deren Verwendung zu einem Fehler in der SSL-Bibliothek führte.
QAbstractSocket::TemporaryError22Es ist ein vorübergehender Fehler aufgetreten (z. B. würde der Vorgang blockieren, der Socket ist jedoch nicht blockierend).
QAbstractSocket::UnknownSocketError-1Es ist ein nicht identifizierter Fehler aufgetreten.

Siehe auch QAbstractSocket::error() und QAbstractSocket::errorOccurred().

enum QAbstractSocket::SocketOption

Diese Enumeration stellt die Optionen dar, die für einen Socket festgelegt werden können. Auf Wunsch können diese Optionen festgelegt werden, nachdem das Signal „ connected()“ vom Socket empfangen wurde oder nachdem ein neuer Socket über „ QTcpServer “ erhalten wurde.

KonstanteWertBeschreibung
QAbstractSocket::LowDelayOption0Versucht, den Socket für geringe Latenz zu optimieren. Bei einem „ QTcpSocket “ würde dies die Option `TCP_NODELAY` setzen und den Nagle-Algorithmus deaktivieren. Setzen Sie diesen Wert auf 1, um die Option zu aktivieren.
QAbstractSocket::KeepAliveOption1Setzen Sie diesen Wert auf 1, um die Socket-Option `SO_KEEPALIVE` zu aktivieren
QAbstractSocket::MulticastTtlOption2Setzen Sie diesen Wert auf eine Ganzzahl, um die Socket-Option `IP_MULTICAST_TTL` (TTL für Multicast-Datagramme) festzulegen.
QAbstractSocket::MulticastLoopbackOption3Setzen Sie diesen Wert auf 1, um die Socket-Option IP_MULTICAST_LOOP (Multicast-Loopback) zu aktivieren.
QAbstractSocket::TypeOfServiceOption4Diese Option wird unter Windows nicht unterstützt. Dies entspricht der Socket-Option `IP_TOS`. Mögliche Werte finden Sie in der folgenden Tabelle.
QAbstractSocket::SendBufferSizeSocketOption5Legt die Größe des Socket-Sendepuffers in Byte auf Betriebssystemebene fest. Dies entspricht der Socket-Option `SO_SNDBUF`. Diese Option hat keine Auswirkungen auf die Puffer ` QIODevice ` oder ` QAbstractSocket `. Dieser Enum-Wert wurde in Qt 5.3 eingeführt.
QAbstractSocket::ReceiveBufferSizeSocketOption6Legt die Größe des Socket-Empfangspuffers in Byte auf Betriebssystemebene fest. Dies entspricht der Socket-Option „SO_RCVBUF“. Diese Option hat keine Auswirkungen auf die Puffer „ QIODevice “ oder „ QAbstractSocket “ (siehe setReadBufferSize()). Dieser Enum-Wert wurde in Qt 5.3 eingeführt.
QAbstractSocket::PathMtuSocketOption7Ruft den Wert der „Path Maximum Transmission Unit“ (PMTU) ab, der dem IP-Stack derzeit bekannt ist, sofern vorhanden. Einige IP-Stacks erlauben auch die Festlegung der MTU für die Übertragung. Dieser Enum-Wert wurde in Qt 5.11 eingeführt.
QAbstractSocket::KeepAliveIdleOption8Die Zeit in Sekunden, die die Verbindung inaktiv bleiben muss, bevor TCP mit dem Senden von Keepalive-Proben beginnt, sofern „KeepAliveOption“ aktiviert ist. Dieser Enum-Wert wurde in Qt 6.11 eingeführt.
QAbstractSocket::KeepAliveIntervalOption9Die Zeit in Sekunden zwischen einzelnen Keepalive-Proben, sofern „KeepAliveOption“ aktiviert ist. Diese Option wird nicht von allen Betriebssystemen unterstützt. Dieser Enum-Wert wurde in Qt 6.11 eingeführt.
QAbstractSocket::KeepAliveCountOption10Die maximale Anzahl von Keepalive-Anfragen, die gesendet werden, bevor TCP die Verbindung trennt, sofern „KeepAliveOption“ aktiviert ist. Diese Option wird nicht von allen Betriebssystemen unterstützt. Dieser Enum-Wert wurde in Qt 6.11 eingeführt.

Mögliche Werte für „TypeOfServiceOption“ sind:

WertBeschreibung
224Netzwerksteuerung
192Netzwerkübergreifende Steuerung
160CRITIC/ECP
128Flash-Übersteuerung
96Blitz
64Sofort
32Priorität
0Routine

Siehe auch QAbstractSocket::setSocketOption() und QAbstractSocket::socketOption().

enum QAbstractSocket::SocketState

Diese Enumeration beschreibt die verschiedenen Zustände, in denen sich ein Socket befinden kann.

KonstanteWertBeschreibung
QAbstractSocket::UnconnectedState0Der Socket ist nicht verbunden.
QAbstractSocket::HostLookupState1Der Socket führt eine Hostnamenssuche durch.
QAbstractSocket::ConnectingState2Der Socket hat mit dem Aufbau einer Verbindung begonnen.
QAbstractSocket::ConnectedState3Eine Verbindung wurde hergestellt.
QAbstractSocket::BoundState4Der Socket ist an eine Adresse und einen Port gebunden.
QAbstractSocket::ClosingState6Der Socket steht kurz vor dem Schließen (möglicherweise stehen noch Daten zum Schreiben an).
QAbstractSocket::ListeningState5Nur für den internen Gebrauch.

Siehe auch QAbstractSocket::state().

enum QAbstractSocket::SocketType

Diese Enumeration beschreibt das Protokoll der Transportschicht.

KonstanteWertBeschreibung
QAbstractSocket::TcpSocket0TCP
QAbstractSocket::UdpSocket1UDP
QAbstractSocket::SctpSocket2SCTP
QAbstractSocket::UnknownSocketType-1Andere als TCP, UDP und SCTP

Siehe auch ` QAbstractSocket::socketType()`.

Dokumentation zu den Member-Funktionen

QAbstractSocket::QAbstractSocket(QAbstractSocket::SocketType socketType, QObject *parent)

Erstellt einen neuen abstrakten Socket vom Typ „ socketType “. Das Argument „ parent “ wird an den Konstruktor von „ QObject “ übergeben.

Siehe auch „ socketType()“, „ QTcpSocket “ und „ QUdpSocket “.

[virtual noexcept] QAbstractSocket::~QAbstractSocket()

Löscht den Socket.

void QAbstractSocket::abort()

Beendet die aktuelle Verbindung und setzt den Socket zurück. Im Gegensatz zu ` disconnectFromHost()` schließt diese Funktion den Socket sofort und verwirft dabei alle noch im Schreibpuffer befindlichen Daten.

Siehe auch disconnectFromHost() und close().

[virtual] bool QAbstractSocket::bind(const QHostAddress &address, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)

Führt eine Bindung an address auf Port port durch, wobei die BindMode mode verwendet wird.

Bei UDP-Sockets wird nach dem Binden das Signal ` QUdpSocket::readyRead()` ausgelöst, sobald ein UDP-Datagramm an der angegebenen Adresse und dem angegebenen Port eintrifft. Daher eignet sich diese Funktion zum Schreiben von UDP-Servern.

Bei TCP-Sockets kann diese Funktion verwendet werden, um festzulegen, welche Schnittstelle für eine ausgehende Verbindung verwendet werden soll, was bei mehreren Netzwerkschnittstellen nützlich ist.

Standardmäßig wird der Socket über die Schnittstelle „ DefaultForPlatform “ BindMode gebunden. Wird kein Port angegeben, wird ein zufälliger Port ausgewählt.

Bei Erfolg gibt die Funktion „ true “ zurück und der Socket wechselt in den Status „ BoundState “; andernfalls gibt sie „ false “ zurück.

bool QAbstractSocket::bind(quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)

Bindet an QHostAddress:Any auf dem Port port unter Verwendung des BindMode mode .

Standardmäßig wird der Socket unter Verwendung von DefaultForPlatform BindMode gebunden. Wenn kein Port angegeben wird, wird ein zufälliger Port ausgewählt.

Dies ist eine überladene Funktion.

[since 6.2] bool QAbstractSocket::bind(QHostAddress::SpecialAddress addr, quint16 port = 0, QAbstractSocket::BindMode mode = DefaultForPlatform)

Bindet an die spezielle Adresse addr auf dem Port port unter Verwendung des BindMode mode .

Standardmäßig wird der Socket über die Adresse DefaultForPlatform am Port BindMode gebunden. Wird kein Port angegeben, wird ein zufälliger Port ausgewählt.

Dies ist eine überladene Funktion.

Diese Funktion wurde in Qt 6.2 eingeführt.

[override virtual] qint64 QAbstractSocket::bytesAvailable() const

Implementiert neu: ` QIODevice::bytesAvailable()` const.

Gibt die Anzahl der eingehenden Bytes zurück, die darauf warten, gelesen zu werden.

Siehe auch „ bytesToWrite()“ und „ read()“.

[override virtual] qint64 QAbstractSocket::bytesToWrite() const

Implementiert: ` QIODevice::bytesToWrite()` const.

Gibt die Anzahl der Bytes zurück, die zum Schreiben anstehen. Die Bytes werden geschrieben, sobald die Kontrolle an die Ereignisschleife zurückgegeben wird oder wenn ` flush()` aufgerufen wird.

Siehe auch ` bytesAvailable()` und ` flush()`.

[override virtual] void QAbstractSocket::close()

Implementiert: ` QIODevice::close()`.

Schließt das E/A-Gerät für den Socket und ruft ` disconnectFromHost()` auf, um die Verbindung des Sockets zu schließen.

Eine Beschreibung der Vorgänge, die beim Schließen eines E/A-Geräts stattfinden, finden Sie unter QIODevice::close().

Siehe auch abort().

[virtual] void QAbstractSocket::connectToHost(const QString &hostName, quint16 port, QIODeviceBase::OpenMode openMode = ReadWrite, QAbstractSocket::NetworkLayerProtocol protocol = AnyIPProtocol)

Es wird versucht, eine Verbindung zu hostName über die angegebene port herzustellen. Mit dem Parameter „ protocol “ kann festgelegt werden, welches Netzwerkprotokoll verwendet werden soll (z. B. IPv4 oder IPv6).

Der Socket wird im angegebenen openMode geöffnet und ruft zunächst HostLookupState auf, um anschließend eine Hostnamensauflösung für hostName durchzuführen. Ist die Auflösung erfolgreich, wird hostFound() ausgegeben und QAbstractSocket ruft ConnectingState auf. Anschließend wird versucht, eine Verbindung zu der oder den durch die Auflösung zurückgegebenen Adressen herzustellen. Ist schließlich eine Verbindung hergestellt, ruft QAbstractSocket ConnectedState auf und gibt connected() aus.

Zu jedem Zeitpunkt kann der Socket errorOccurred() ausgeben, um zu signalisieren, dass ein Fehler aufgetreten ist.

hostName kann eine IP-Adresse in Zeichenfolgenform (z. B. „43.195.83.32“) oder ein Hostname (z. B. „example.com“) sein. QAbstractSocket führt nur dann eine Abfrage durch, wenn dies erforderlich ist. port liegt in nativer Byte-Reihenfolge vor.

Siehe auch state(), peerName(), peerAddress(), peerPort() und waitForConnected().

void QAbstractSocket::connectToHost(const QHostAddress &address, quint16 port, QIODeviceBase::OpenMode openMode = ReadWrite)

Es wird versucht, eine Verbindung zu address auf Port port herzustellen.

Dies ist eine überladene Funktion.

[signal] void QAbstractSocket::connected()

Dieses Signal wird ausgelöst, nachdem connectToHost() aufgerufen wurde und eine Verbindung erfolgreich hergestellt wurde.

Hinweis: Auf einigen Betriebssystemen wird das Signal `connected()` möglicherweise direkt vom Aufruf von ` connectToHost()` für Verbindungen zum lokalen Host ausgelöst.

Siehe auch ` connectToHost()` und ` disconnected()`.

[virtual] void QAbstractSocket::disconnectFromHost()

Versucht, den Socket zu schließen. Wenn noch Daten zum Schreiben anstehen, wechselt „ QAbstractSocket “ 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 „ connectToHost()“.

[signal] void QAbstractSocket::disconnected()

Dieses Signal wird ausgelöst, wenn die Verbindung zum Socket getrennt wurde.

Warnung: Wenn Sie die ` sender()`-Funktion für dieses Signal in einem damit verbundenen Slot entfernen müssen, verwenden Sie die Funktion ` deleteLater()`.

Siehe auch connectToHost(), disconnectFromHost() und abort().

QAbstractSocket::SocketError QAbstractSocket::error() const

Gibt den Typ des zuletzt aufgetretenen Fehlers zurück.

Siehe auch „ state()“ und „ errorString()“.

[signal] void QAbstractSocket::errorOccurred(QAbstractSocket::SocketError socketError)

Dieses Signal wird ausgelöst, nachdem ein Fehler aufgetreten ist. Der Parameter „ socketError “ beschreibt die Art des aufgetretenen Fehlers.

Wenn dieses Signal ausgelöst wird, ist der Socket möglicherweise noch nicht bereit für einen erneuten Verbindungsversuch. In diesem Fall sollten Versuche, die Verbindung wiederherzustellen, über die Ereignisschleife erfolgen. Verwenden Sie beispielsweise `QChronoTimer::singleShot()` mit einer Zeitüberschreitung von 0 ns.

QAbstractSocket::SocketError ist kein registrierter Metatyp; daher müssen Sie ihn für Verbindungen in der Warteschlange mit ` Q_DECLARE_METATYPE()` und ` qRegisterMetaType()` registrieren.

Siehe auch error(), errorString() und „Erstellen benutzerdefinierter Qt-Typen“.

bool QAbstractSocket::flush()

Diese Funktion schreibt so viel wie möglich aus dem internen Schreibpuffer in den zugrunde liegenden Netzwerk-Socket, ohne zu blockieren. Wurden Daten geschrieben, gibt diese Funktion „ true “ zurück; andernfalls wird „false“ zurückgegeben.

Rufen Sie diese Funktion auf, wenn Sie möchten, dass „ QAbstractSocket “ sofort mit dem Senden der gepufferten Daten beginnt. Die Anzahl der erfolgreich geschriebenen Bytes hängt vom Betriebssystem ab. In den meisten Fällen müssen Sie diese Funktion nicht aufrufen, da „ QAbstractSocket “ automatisch mit dem Senden der Daten beginnt, sobald die Kontrolle an die Ereignisschleife zurückgegeben wird. Wenn keine Ereignisschleife vorhanden ist, rufen Sie stattdessen „ waitForBytesWritten()“ auf.

Siehe auch ` write()` und ` waitForBytesWritten()`.

[signal] void QAbstractSocket::hostFound()

Dieses Signal wird ausgelöst, nachdem connectToHost() aufgerufen wurde und die Host-Suche erfolgreich war.

Hinweis: Seit Qt 4.6.3 kann ` QAbstractSocket ` `hostFound()` direkt aus dem Aufruf von ` connectToHost()` ausgeben, da ein DNS-Ergebnis möglicherweise zwischengespeichert wurde.

Siehe auch connected().

[override virtual] bool QAbstractSocket::isSequential() const

Implementiert: ` QIODevice::isSequential()` const.

bool QAbstractSocket::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 durchgeführt werden können.

Siehe auch state().

QHostAddress QAbstractSocket::localAddress() const

Gibt die Host-Adresse des lokalen Sockets zurück, sofern verfügbar; andernfalls wird QHostAddress::Null zurückgegeben.

Dies ist normalerweise die Haupt-IP-Adresse des Hosts, kann jedoch bei Verbindungen zum lokalen Host auch „ QHostAddress::LocalHost “ (127.0.0.1) sein.

Siehe auch „ localPort()“, „ peerAddress()“ und „ setLocalAddress()“.

quint16 QAbstractSocket::localPort() const

Gibt die Host-Portnummer (in nativer Byte-Reihenfolge) des lokalen Sockets zurück, sofern verfügbar; andernfalls wird 0 zurückgegeben.

Siehe auch localAddress(), peerPort() und setLocalPort().

QAbstractSocket::PauseModes QAbstractSocket::pauseMode() const

Gibt den Pausenmodus dieses Sockets zurück.

Siehe auch setPauseMode() und resume().

QHostAddress QAbstractSocket::peerAddress() const

Gibt die Adresse des verbundenen Peers zurück, wenn sich der Socket im Status „ ConnectedState “ befindet; andernfalls wird „ QHostAddress::Null “ zurückgegeben.

Siehe auch peerName(), peerPort(), localAddress() und setPeerAddress().

QString QAbstractSocket::peerName() const

Gibt den Namen des Peers zurück, wie er durch connectToHost() angegeben wurde, oder ein leeres QString, falls connectToHost() nicht aufgerufen wurde.

Siehe auch peerAddress(), peerPort() und setPeerName().

quint16 QAbstractSocket::peerPort() const

Gibt den Port des verbundenen Peers zurück, wenn sich der Socket in ConnectedState befindet; andernfalls wird 0 zurückgegeben.

Siehe auch peerAddress(), localPort() und setPeerPort().

QString QAbstractSocket::protocolTag() const

Gibt das Protokoll-Tag für diesen Socket zurück. Ist das Protokoll-Tag gesetzt, wird es bei der internen Erstellung an ` QNetworkProxyQuery ` übergeben, um das zu verwendende Protokoll-Tag anzugeben.

Siehe auch setProtocolTag() und QNetworkProxyQuery.

QNetworkProxy QAbstractSocket::proxy() const

Gibt den Netzwerk-Proxy für diesen Socket zurück. Standardmäßig wird QNetworkProxy::DefaultProxy verwendet, was bedeutet, dass dieser Socket die Standard-Proxy-Einstellungen der Anwendung abfragt.

Siehe auch setProxy(), QNetworkProxy und QNetworkProxyFactory.

[signal] void QAbstractSocket::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator)

Dieses Signal kann ausgegeben werden, wenn eine „ proxy “ verwendet wird, die eine Authentifizierung erfordert. Das „ authenticator “-Objekt kann dann mit den erforderlichen Angaben gefüllt werden, um die Authentifizierung zu ermöglichen und die Verbindung fortzusetzen.

Hinweis: Es ist nicht möglich, eine `QueuedConnection` zu verwenden, um eine Verbindung zu diesem Signal herzustellen, da die Verbindung fehlschlägt, wenn das `authenticator`-Objekt bei der Rückgabe des Signals nicht mit neuen Informationen gefüllt wurde.

Siehe auch „ QAuthenticator “ und „ QNetworkProxy “.

qint64 QAbstractSocket::readBufferSize() const

Gibt die Größe des internen Lesepuffers zurück. Dies begrenzt die Datenmenge, die der Client empfangen kann, bevor Sie die Funktion „ read()“ oder „ readAll()“ aufrufen.

Eine Lesepuffergröße von 0 (Standardwert) 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 QAbstractSocket::readData(char *data, qint64 maxSize)

Implementiert neu: QIODevice::readData(char *data, qint64 maxSize).

[override virtual protected] qint64 QAbstractSocket::readLineData(char *data, qint64 maxlen)

Implementiert: QIODevice::readLineData(char *data, qint64 maxSize).

[virtual] void QAbstractSocket::resume()

Setzt die Datenübertragung über den Socket fort. Diese Methode sollte nur verwendet werden, nachdem der Socket so eingestellt wurde, dass er bei Benachrichtigungen pausiert, und eine Benachrichtigung empfangen wurde. Die einzige derzeit unterstützte Benachrichtigung ist „ QSslSocket::sslErrors()“. Der Aufruf dieser Methode, wenn der Socket nicht pausiert ist, führt zu undefiniertem Verhalten.

Siehe auch „ pauseMode()“ und „ setPauseMode()“.

[protected] void QAbstractSocket::setLocalAddress(const QHostAddress &address)

Setzt die Adresse auf der lokalen Seite einer Verbindung auf address.

Sie können diese Funktion in einer Unterklasse von ` QAbstractSocket ` aufrufen, um den Rückgabewert der Funktion ` localAddress()` nach dem Aufbau einer Verbindung zu ändern. Diese Funktion wird häufig bei Proxy-Verbindungen für die Konfiguration virtueller Verbindungen verwendet.

Beachten Sie, dass diese Funktion die lokale Adresse des Sockets nicht vor dem Aufbau einer Verbindung bindet (z. B. ` QAbstractSocket::bind()`).

Siehe auch localAddress(), setLocalPort() und setPeerAddress().

[protected] void QAbstractSocket::setLocalPort(quint16 port)

Legt den Port auf der lokalen Seite einer Verbindung zu port fest.

Sie können diese Funktion in einer Unterklasse von ` QAbstractSocket ` aufrufen, um den Rückgabewert der Funktion ` localPort()` nach dem Aufbau einer Verbindung zu ändern. Diese Funktion wird häufig bei Proxy-Verbindungen für die Konfiguration virtueller Verbindungen verwendet.

Beachten Sie, dass diese Funktion den lokalen Port des Sockets nicht vor dem Aufbau einer Verbindung bindet (z. B. ` QAbstractSocket::bind()`).

Siehe auch localPort(), localAddress(), setLocalAddress() und setPeerPort().

void QAbstractSocket::setPauseMode(QAbstractSocket::PauseModes pauseMode)

Legt fest, ob bei Erhalt einer Benachrichtigung eine Pause eingelegt werden soll. Der Parameter „ pauseMode “ gibt die Bedingungen an, unter denen der Socket angehalten werden soll. Die einzige derzeit unterstützte Benachrichtigung ist „ QSslSocket::sslErrors()“. Bei der Einstellung „ PauseOnSslErrors “ wird die Datenübertragung über den Socket angehalten und muss durch den Aufruf von „ resume()“ explizit wieder aktiviert werden. Standardmäßig ist diese Option auf „ PauseNever “ gesetzt. Diese Option muss vor dem Herstellen einer Verbindung zum Server aufgerufen werden, andernfalls kommt es zu undefiniertem Verhalten.

Siehe auch „ pauseMode()“ und „ resume()“.

[protected] void QAbstractSocket::setPeerAddress(const QHostAddress &address)

Setzt die Adresse der Gegenstelle der Verbindung auf address.

Sie können diese Funktion in einer Unterklasse von ` QAbstractSocket ` aufrufen, um den Rückgabewert der Funktion ` peerAddress()` nach dem Aufbau einer Verbindung zu ändern. Diese Funktion wird häufig bei Proxy-Verbindungen für virtuelle Verbindungseinstellungen verwendet.

Siehe auch „ peerAddress()“, „ setPeerPort()“ und „ setLocalAddress()“.

[protected] void QAbstractSocket::setPeerName(const QString &name)

Setzt den Hostnamen des Remote-Peers auf name.

Sie können diese Funktion in einer Unterklasse von ` QAbstractSocket ` aufrufen, um den Rückgabewert der Funktion ` peerName()` nach dem Aufbau einer Verbindung zu ändern. Diese Funktion wird häufig bei Proxy-Verbindungen für virtuelle Verbindungseinstellungen verwendet.

Siehe auch ` peerName()`.

[protected] void QAbstractSocket::setPeerPort(quint16 port)

Legt den Port der Gegenstelle der Verbindung auf port fest.

Sie können diese Funktion in einer Unterklasse von ` QAbstractSocket ` aufrufen, um den Rückgabewert der Funktion ` peerPort()` zu ändern, nachdem eine Verbindung hergestellt wurde. Diese Funktion wird häufig bei Proxy-Verbindungen für virtuelle Verbindungseinstellungen verwendet.

Siehe auch „ peerPort()“, „ setPeerAddress()“ und „ setLocalPort()“.

void QAbstractSocket::setProtocolTag(const QString &tag)

Setzt das Protokoll-Tag für diesen Socket auf „ tag “.

Siehe auch ` protocolTag()`.

void QAbstractSocket::setProxy(const QNetworkProxy &networkProxy)

Legt den expliziten Netzwerk-Proxy für diesen Socket auf „ networkProxy “ fest.

Um die Verwendung eines Proxys für diesen Socket zu deaktivieren, verwenden Sie den Proxy-Typ „ QNetworkProxy::NoProxy “:

socket->setProxy(QNetworkProxy::NoProxy);

Der Standardwert für den Proxy ist „ QNetworkProxy::DefaultProxy “, was bedeutet, dass der Socket die Anwendungseinstellungen verwendet: Ist ein Proxy mit „ QNetworkProxy::setApplicationProxy “ festgelegt, wird dieser verwendet; andernfalls, wenn eine Factory mit „ QNetworkProxyFactory::setApplicationProxyFactory “ festgelegt ist, wird diese Factory mit dem Typ „ QNetworkProxyQuery::TcpSocket “ abgefragt.

Siehe auch proxy(), QNetworkProxy und QNetworkProxyFactory::queryProxy().

[virtual] void QAbstractSocket::setReadBufferSize(qint64 size)

Legt die Größe des internen Lesepuffers von „ QAbstractSocket “ auf „ size “ Bytes fest.

Wenn die Puffergröße auf einen bestimmten Wert begrenzt ist, puffert „ QAbstractSocket “ 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.

Nur ` QTcpSocket ` nutzt den internen Puffer von ` QAbstractSocket`; ` QUdpSocket ` verwendet überhaupt keine Pufferung, sondern stützt sich stattdessen auf die implizite Pufferung des Betriebssystems. Aus diesem Grund hat der Aufruf dieser Funktion bei ` QUdpSocket ` keine Wirkung.

Siehe auch readBufferSize() und read().

[virtual] bool QAbstractSocket::setSocketDescriptor(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite)

Initialisiert „ QAbstractSocket “ 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. Lese- und Schreibpuffer werden geleert, wobei alle ausstehenden Daten verworfen werden.

Hinweis: Es ist nicht möglich, zwei abstrakte Sockets mit demselben nativen Socket-Deskriptor zu initialisieren.

Siehe auch ` socketDescriptor()`.

[protected] void QAbstractSocket::setSocketError(QAbstractSocket::SocketError socketError)

Setzt den Typ des zuletzt aufgetretenen Fehlers auf „ socketError “.

Siehe auch setSocketState() und setErrorString().

[virtual] void QAbstractSocket::setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)

Setzt den angegebenen Socket „ option “ auf den unter „ value “ beschriebenen Wert.

Hinweis: Da die Optionen auf einem internen Socket gesetzt werden, gelten sie nur, wenn der Socket erstellt wurde. Dies ist erst nach einem Aufruf von ` bind()` oder nach der Ausgabe von ` connected()` garantiert.

Siehe auch socketOption().

[protected] void QAbstractSocket::setSocketState(QAbstractSocket::SocketState state)

Setzt den Status des Sockets auf „ state “.

Siehe auch „ state()“.

[override virtual protected] qint64 QAbstractSocket::skipData(qint64 maxSize)

Implementiert: QIODevice::skipData(qint64 maxSize).

[virtual] qintptr QAbstractSocket::socketDescriptor() const

Gibt den nativen Socket-Deskriptor des Objekts „ QAbstractSocket “ zurück, sofern dieser verfügbar ist; andernfalls wird -1 zurückgegeben.

Wenn der Socket „ QNetworkProxy “ verwendet, ist der zurückgegebene Deskriptor möglicherweise nicht mit nativen Socket-Funktionen verwendbar.

Der Socket-Deskriptor ist nicht verfügbar, wenn sich „ QAbstractSocket “ im Status „ UnconnectedState “ befindet.

Siehe auch „ setSocketDescriptor()“.

[virtual] QVariant QAbstractSocket::socketOption(QAbstractSocket::SocketOption option)

Gibt den Wert der Option „ option “ zurück.

Siehe auch „ setSocketOption()“.

QAbstractSocket::SocketType QAbstractSocket::socketType() const

Gibt den Socket-Typ zurück (TCP, UDP oder andere).

Siehe auch QTcpSocket und QUdpSocket.

QAbstractSocket::SocketState QAbstractSocket::state() const

Gibt den Status des Sockets zurück.

Siehe auch „ error()“.

[signal] void QAbstractSocket::stateChanged(QAbstractSocket::SocketState socketState)

Dieses Signal wird immer dann ausgelöst, wenn sich der Zustand von QAbstractSocket ändert. Der Parameter „ socketState “ gibt den neuen Zustand an.

QAbstractSocket::SocketState ist kein registrierter Metatyp, daher müssen Sie ihn für Verbindungen in der Warteschlange mit ` Q_DECLARE_METATYPE()` und ` qRegisterMetaType()` registrieren.

Siehe auch state() und „Erstellen benutzerdefinierter Qt-Typen“.

[override virtual] bool QAbstractSocket::waitForBytesWritten(int msecs = 30000)

Implementiert: ` QIODevice::waitForBytesWritten(int msecs)`.

Diese Funktion wartet, bis mindestens ein Byte auf den Socket geschrieben wurde und das Signal „ bytesWritten()“ ausgelöst wurde. Die Funktion läuft nach msecs Millisekunden ab; die Standard-Zeitüberschreitung beträgt 30000 Millisekunden.

Die Funktion gibt „ true “ zurück, wenn das Signal „ bytesWritten()“ ausgelöst wird; andernfalls gibt sie „ false “ zurück (wenn ein Fehler aufgetreten ist oder die Operation nach Ablauf des Zeitlimits abgebrochen wurde).

Hinweis: Diese Funktion kann unter Windows gelegentlich fehlschlagen. Ziehen Sie die Verwendung der Ereignisschleife und des Signals „ bytesWritten()“ in Betracht, wenn Ihre Software unter Windows ausgeführt wird.

Siehe auch ` waitForReadyRead()`.

[virtual] bool QAbstractSocket::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->connectToHost("imap", 143);
if (socket->waitForConnected(1000))
    qDebug("Connected!");

Wenn „msecs“ den Wert -1 hat, läuft diese Funktion nicht ab.

Hinweis: Diese Funktion wartet möglicherweise etwas länger als bei „ msecs “, je nachdem, wie lange die Host-Suche dauert.

Hinweis: Beimehreren Aufrufen dieser Funktion wird die Zeit nicht kumuliert. Wenn die Funktion ein Timeout erreicht, wird der Verbindungsvorgang abgebrochen.

Hinweis: Diese Funktion kann unter Windows gelegentlich fehlschlagen. Erwägen Sie die Verwendung der Ereignisschleife und des Signals „ connected()“, wenn Ihre Software unter Windows ausgeführt wird.

Siehe auch „ connectToHost()“ und „ connected()“.

[virtual] bool QAbstractSocket::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 dieser QAbstractSocket bereits getrennt ist). Falls „ false “ zurückgegeben wird, können Sie „ error()“ aufrufen, um die Fehlerursache zu ermitteln.

Das folgende Beispiel wartet bis zu einer Sekunde darauf, dass eine Verbindung geschlossen wird:

socket->disconnectFromHost();
if (socket->state()== QAbstractSocket::UnconnectedState
    || socket->waitForDisconnected(1000)) {
        qDebug("Disconnected!");
}

Wenn „msecs“ den Wert -1 hat, läuft diese Funktion ohne Zeitlimit ab.

Hinweis: Diese Funktion kann unter Windows gelegentlich fehlschlagen. Ziehen Sie die Verwendung der Ereignisschleife und des Signals „ disconnected()“ in Betracht, wenn Ihre Software unter Windows ausgeführt wird.

Siehe auch „ disconnectFromHost()“ und „ close()“.

[override virtual] bool QAbstractSocket::waitForReadyRead(int msecs = 30000)

Umsetzung von: QIODevice::waitForReadyRead(int msecs).

Diese Funktion wartet, bis neue Daten zum Lesen verfügbar sind und das Signal „ readyRead()“ ausgelöst wurde. Die Funktion läuft nach msecs Millisekunden ab; die Standard-Zeitüberschreitung beträgt 30000 Millisekunden.

Die Funktion gibt „ true “ zurück, wenn das Signal „ readyRead()“ ausgelöst wurde und neue Daten zum Lesen verfügbar sind; andernfalls gibt sie „ false “ zurück (wenn ein Fehler aufgetreten ist oder die Operation eine Zeitüberschreitung erfahren hat).

Hinweis: Diese Funktion kann unter Windows gelegentlich fehlschlagen. Ziehen Sie die Verwendung der Ereignisschleife und des Signals „ readyRead()“ in Betracht, wenn Ihre Software unter Windows ausgeführt wird.

Siehe auch ` waitForBytesWritten()`.

[override virtual protected] qint64 QAbstractSocket::writeData(const char *data, qint64 size)

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.