QAbstractSocket Class

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

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

QTcpSocket und QUdpSocket

Hinweis: Alle Funktionen in 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, …, PathMtuSocketOption }
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)

Reimplementierte ö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)

Reimplementierte 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

Detaillierte 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:

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

TCP (Transmission Control Protocol) ist ein zuverlässiges, streamorientiertes, 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 Übertragung von Daten geeignet ist, während das leichtgewichtige UDP verwendet werden kann, wenn die Zuverlässigkeit nicht wichtig ist.

Die API von QAbstractSocket vereinheitlicht die meisten der Unterschiede zwischen den beiden Protokollen. Zum Beispiel, obwohl UDP verbindungslos ist, baut connectToHost() eine virtuelle Verbindung für UDP-Sockets auf, was es Ihnen ermöglicht, QAbstractSocket auf mehr oder weniger die gleiche Art und Weise zu benutzen, unabhängig vom zugrunde liegenden Protokoll. Intern merkt sich QAbstractSocket die Adresse und den Port, die an connectToHost() übergeben wurden, und Funktionen wie read() und write() verwenden diese Werte.

QAbstractSocket hat zu jeder Zeit einen Status (zurückgegeben von state()). Der Anfangszustand ist UnconnectedState. Nach dem Aufruf von connectToHost() geht der Socket zunächst in HostLookupState über. Wenn der Host gefunden wird, geht QAbstractSocket in ConnectingState über und sendet das Signal hostFound(). Wenn die Verbindung hergestellt wurde, wird ConnectedState aufgerufen und das Signal connected() ausgegeben. Wenn in irgendeiner Phase ein Fehler auftritt, wird errorOccurred() ausgegeben. Wenn sich der Status ändert, wird stateChanged() ausgegeben. Der Einfachheit halber gibt isValid() true zurück, wenn der Socket zum Lesen und Schreiben bereit ist. Beachten Sie jedoch, dass der Zustand des Sockets ConnectedState sein muss, bevor gelesen und geschrieben werden kann.

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

Das Signal readyRead() wird jedes Mal ausgegeben, wenn ein neues Datenpaket angekommen ist. bytesAvailable() gibt dann die Anzahl der Bytes zurück, die zum Lesen verfügbar sind. Normalerweise würden Sie das Signal readyRead() mit einem Slot verbinden und dort alle verfügbaren Daten lesen. Wenn Sie nicht alle Daten auf einmal lesen, sind die verbleibenden Daten auch später noch verfügbar, und alle neu ankommenden 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 geht in QAbstractSocket::ClosingState über. Nachdem alle anstehenden Daten in den Socket geschrieben wurden, schließt QAbstractSocket den Socket, ruft QAbstractSocket::UnconnectedState auf und sendet disconnected(). Wenn Sie eine Verbindung sofort abbrechen und alle anstehenden Daten verwerfen wollen, rufen Sie stattdessen abort() auf. Wenn der entfernte Host die Verbindung schließt, sendet QAbstractSocket errorOccurred(QAbstractSocket::RemoteHostClosedError), wobei der Socket-Status immer noch ConnectedState ist, und dann wird das Signal disconnected() gesendet.

Der Port und die Adresse der verbundenen Gegenstelle werden durch die Aufrufe peerPort() und peerAddress() ermittelt. peerName() gibt den Hostnamen der Gegenstelle zurück, wie er an connectToHost() übergeben wurde. localPort() und localAddress() geben den Port und die Adresse des lokalen Sockets zurück.

QAbstractSocket bietet eine Reihe von Funktionen, die den aufrufenden Thread anhalten, bis bestimmte Signale ausgegeben werden. Diese Funktionen können verwendet werden, um blockierende Sockets zu implementieren:

Wir zeigen 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() 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 normalerweise 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. Siehe die Beispiele fortuneclient und blockingfortuneclient für einen Überblick über beide Ansätze.

Hinweis: Wir raten davon ab, die blockierenden Funktionen zusammen mit Signalen zu verwenden. Es sollte eine der beiden Möglichkeiten verwendet werden.

QAbstractSocket kann mit den Stream-Operatoren (operator<<() und operator>>()) von QTextStream und QDataStream verwendet werden. Es gibt jedoch ein Problem, das zu beachten ist: Sie müssen sicherstellen, dass genügend Daten vorhanden sind, bevor Sie versuchen, sie mit operator>>() zu lesen.

Siehe auch QNetworkAccessManager und QTcpServer.

Dokumentation der Mitgliedstypen

enum QAbstractSocket::BindFlag
flags QAbstractSocket::BindMode

Diese Aufzählung 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 dieselbe Adresse und denselben Port abhören (z. B. kann ein Webserver mit mehreren vorverzweigten Abhörern die Antwortzeit erheblich verbessern). Da es jedoch jedem Dienst erlaubt ist, sich neu zu binden, unterliegt diese Option bestimmten Sicherheitsüberlegungen. Beachten Sie, dass Sie durch die Kombination dieser Option mit ReuseAddressHint Ihrem Dienst auch erlauben, eine bestehende gemeinsame Adresse neu zu binden. Unter Unix entspricht dies der Socket-Option SO_REUSEADDR. Unter Windows ist dies das Standardverhalten, daher wird diese Option ignoriert.
QAbstractSocket::DontShareAddress0x2Binden Sie die Adresse und den Port exklusiv, so dass keine anderen Dienste eine erneute Bindung vornehmen können. Wenn Sie diese Option an QAbstractSocket::bind() übergeben, ist gewährleistet, dass Ihr Dienst im Erfolgsfall der einzige ist, der auf die Adresse und den Port hört. Kein Dienst darf sich neu binden, selbst wenn er ReuseAddressHint übergibt. Diese Option bietet mehr Sicherheit als ShareAddress, erfordert aber auf bestimmten Betriebssystemen, dass Sie den Server mit Administratorrechten ausführen. Unter Unix und macOS ist die Nichtfreigabe das Standardverhalten für die Bindung einer Adresse und eines Anschlusses, daher wird diese Option ignoriert. Unter Windows verwendet diese Option die Socket-Option SO_EXCLUSIVEADDRUSE.
QAbstractSocket::ReuseAddressHint0x4Gibt QAbstractSocket einen Hinweis, dass es versuchen soll, den Dienst neu zu binden, auch 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 ist dies gleichbedeutend mit (DontShareAddress + ReuseAddressHint) und unter Windows gleichbedeutend mit ShareAddress.

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

enum QAbstractSocket::NetworkLayerProtocol

Diese Aufzählung beschreibt die in Qt verwendeten Protokollwerte 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 Aufzählung beschreibt das Verhalten, wenn der Socket sich mit der weiteren Datenübertragung zurückhalten soll. Die einzige derzeit unterstützte Benachrichtigung ist QSslSocket::sslErrors().

KonstanteWertBeschreibung
QAbstractSocket::PauseNever0x0Die Datenübertragung auf dem Socket nicht unterbrechen. Dies ist die Voreinstellung und entspricht dem Verhalten von Qt 4.
QAbstractSocket::PauseOnSslErrors0x1Pausiere die Datenübertragung auf dem Socket beim Empfang einer SSL-Fehlermeldung. D.H. QSslSocket::sslErrors().

Der PauseModes Typ ist ein Typedef für QFlags<PauseMode>. Er speichert eine OR-Kombination von PauseMode-Werten.

enum QAbstractSocket::SocketError

Diese Aufzählung beschreibt die Socket-Fehler, die auftreten können.

KonstanteWertBeschreibung
QAbstractSocket::ConnectionRefusedError0Die Verbindung wurde von der Gegenstelle abgelehnt (oder die Zeit wurde überschritten).
QAbstractSocket::RemoteHostClosedError1Der entfernte Host hat die Verbindung geschlossen. Beachten Sie, dass der Client-Socket (d. h. dieser Socket) geschlossen wird, nachdem die Remote-Close-Benachrichtigung gesendet wurde.
QAbstractSocket::HostNotFoundError2Die Hostadresse wurde nicht gefunden.
QAbstractSocket::SocketAccessError3Die Socket-Operation ist fehlgeschlagen, weil die Anwendung nicht über die erforderlichen Berechtigungen verfügte.
QAbstractSocket::SocketResourceError4Dem lokalen System sind die Ressourcen ausgegangen (z. B. zu viele Sockets).
QAbstractSocket::SocketTimeoutError5Die Socket-Operation hat eine Zeitüberschreitung verursacht.
QAbstractSocket::DatagramTooLargeError6Das Datagramm war größer als das Limit des Betriebssystems (das bis zu 8192 Bytes betragen kann).
QAbstractSocket::NetworkError7Es ist ein Fehler im Netzwerk aufgetreten (z. B. wurde das Netzwerkkabel versehentlich eingesteckt).
QAbstractSocket::AddressInUseError8Die für QAbstractSocket::bind() angegebene Adresse ist bereits in Gebrauch und wurde als exklusiv festgelegt.
QAbstractSocket::SocketAddressNotAvailableError9Die an 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 verwendet 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 letzte versuchte Operation wurde noch nicht beendet (läuft noch im Hintergrund).
QAbstractSocket::ProxyConnectionRefusedError14Der Proxyserver konnte nicht kontaktiert werden, da die Verbindung zu diesem Server verweigert wurde
QAbstractSocket::ProxyConnectionClosedError15Die Verbindung zum Proxy-Server wurde unerwartet geschlossen (bevor die Verbindung zur letzten Gegenstelle hergestellt wurde)
QAbstractSocket::ProxyConnectionTimeoutError16Die Verbindung zum Proxyserver wurde unterbrochen oder der Proxyserver hat in der Authentifizierungsphase nicht mehr geantwortet.
QAbstractSocket::ProxyNotFoundError17Die mit setProxy() eingestellte Proxy-Adresse (oder der Anwendungsproxy) wurde nicht gefunden.
QAbstractSocket::ProxyProtocolError18Die Verbindungsaushandlung mit dem Proxyserver ist fehlgeschlagen, da die Antwort des Proxyservers nicht verstanden wurde.
QAbstractSocket::OperationError19Es wurde ein Vorgang 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 das Ergebnis einer fehlerhaften Installation oder Fehlkonfiguration der Bibliothek.
QAbstractSocket::SslInvalidUserDataError21Es wurden ungültige Daten (Zertifikat, Schlüssel, Cypher usw.) bereitgestellt, und ihre Verwendung führte zu einem Fehler in der SSL-Bibliothek.
QAbstractSocket::TemporaryError22Es ist ein temporärer Fehler aufgetreten (z. B. würde die Operation blockieren und der Socket ist nicht blockierend).
QAbstractSocket::UnknownSocketError-1Ein nicht identifizierter Fehler ist aufgetreten.

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

enum QAbstractSocket::SocketOption

Diese Aufzählung stellt die Optionen dar, die für ein Socket gesetzt werden können. Falls gewünscht, können sie gesetzt werden, nachdem das Signal connected() vom Socket empfangen wurde oder nachdem ein neuer Socket von QTcpServer empfangen wurde.

KonstanteWertBeschreibung
QAbstractSocket::LowDelayOption0Versucht, den Socket für eine niedrige Latenzzeit zu optimieren. Bei QTcpSocket würde dies die Option TCP_NODELAY setzen und den Nagle-Algorithmus deaktivieren. Setzen Sie dies auf 1, um zu aktivieren.
QAbstractSocket::KeepAliveOption1Setzen Sie diesen Wert auf 1, um die Socket-Option SO_KEEPALIVE zu aktivieren.
QAbstractSocket::MulticastTtlOption2Setzen Sie dies auf einen ganzzahligen Wert, um die Socket-Option IP_MULTICAST_TTL (TTL für Multicast-Datagramme) zu setzen.
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 siehe Tabelle unten.
QAbstractSocket::SendBufferSizeSocketOption5Legt die Größe des Socket-Sendepuffers in Bytes auf der Betriebssystemebene fest. Dies entspricht der Socket-Option SO_SNDBUF. Diese Option hat keinen Einfluss auf die Puffer QIODevice oder QAbstractSocket. Dieser Enum-Wert wurde in Qt 5.3 eingeführt.
QAbstractSocket::ReceiveBufferSizeSocketOption6Setzt die Größe des Socket-Empfangspuffers in Bytes auf OS-Ebene. Dies entspricht der Socket-Option SO_RCVBUF. Diese Option hat keinen Einfluss 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, falls vorhanden. Einige IP-Stacks erlauben auch die Einstellung der MTU für die Übertragung. Dieser Enum-Wert wurde in Qt 5.11 eingeführt.

Mögliche Werte für TypeOfServiceOption sind:

WertBeschreibung
224Netzwerkkontrolle
192Steuerung des Internet-Netzwerks
160CRITIC/ECP
128Flash-Übersteuerung
96Blitzlicht
64Unmittelbar
32Vorrang
0Routine

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

enum QAbstractSocket::SocketState

Diese Aufzählung 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 Suche nach dem Hostnamen durch.
QAbstractSocket::ConnectingState2Der Socket hat mit dem Aufbau einer Verbindung begonnen.
QAbstractSocket::ConnectedState3Eine Verbindung ist aufgebaut.
QAbstractSocket::BoundState4Der Socket ist an eine Adresse und einen Port gebunden.
QAbstractSocket::ClosingState6Der Socket ist im Begriff, sich zu schließen (möglicherweise warten noch Daten darauf, geschrieben zu werden).
QAbstractSocket::ListeningState5Nur für den internen Gebrauch.

Siehe auch QAbstractSocket::state().

enum QAbstractSocket::SocketType

Diese Aufzählung 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 der Mitgliedsfunktionen

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

Erzeugt 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()

Zerstört die Steckdose.

void QAbstractSocket::abort()

Bricht die aktuelle Verbindung ab und setzt den Socket zurück. Im Gegensatz zu disconnectFromHost() schließt diese Funktion den Socket sofort und verwirft alle anstehenden Daten im Schreibpuffer.

Siehe auch disconnectFromHost() und close().

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

Bindet an address am Port port, unter Verwendung der BindMode mode .

Bei UDP-Sockets wird nach der Bindung das Signal QUdpSocket::readyRead() ausgegeben, wenn ein UDP-Datagramm an der angegebenen Adresse und dem angegebenen Port ankommt. Daher ist diese Funktion nützlich, um UDP-Server zu schreiben.

Bei TCP-Sockets kann mit dieser Funktion angegeben werden, welche Schnittstelle für eine ausgehende Verbindung verwendet werden soll, was im Falle mehrerer Netzwerkschnittstellen nützlich ist.

Standardmäßig wird der Socket über die DefaultForPlatform BindMode gebunden. Wenn kein Port angegeben wird, wird ein zufälliger Port gewählt.

Bei Erfolg gibt die Funktion true zurück, und der Socket wird in BoundState eingetragen; andernfalls gibt sie false zurück.

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

Dies ist eine überladene Funktion.

Bindet an QHostAddress:Any am Port port, unter Verwendung der BindMode mode .

Standardmäßig wird der Socket über die DefaultForPlatform BindMode gebunden. Wenn kein Port angegeben wird, wird ein zufälliger Port gewählt.

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

Dies ist eine überladene Funktion.

Bindet an die spezielle Adresse addr am Port port, unter Verwendung der BindMode mode .

Standardmäßig wird der Socket über die DefaultForPlatform BindMode gebunden. Wenn kein Port angegeben wird, wird ein zufälliger Port gewählt.

Diese Funktion wurde in Qt 6.2 eingeführt.

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

Reimplements: 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

Reimplements: QIODevice::bytesToWrite() const.

Gibt die Anzahl der Bytes zurück, die darauf warten, geschrieben zu werden. Die Bytes werden geschrieben, wenn die Kontrolle an die Ereignisschleife zurückgeht oder wenn flush() aufgerufen wird.

Siehe auch bytesAvailable() und flush().

[override virtual] void QAbstractSocket::close()

Reimplements: 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.

Siehe QIODevice::close() für eine Beschreibung der Aktionen, die auftreten, wenn ein E/A-Gerät geschlossen wird.

Siehe auch abort().

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

Versucht, eine Verbindung zu hostName auf der angegebenen port herzustellen. Der Parameter protocol kann verwendet werden, um das zu verwendende Netzwerkprotokoll anzugeben (z. B. IPv4 oder IPv6).

Der Socket wird in der angegebenen openMode geöffnet und gibt zunächst HostLookupState ein, dann führt er einen Hostnamen-Lookup von hostName durch. Wenn der Lookup erfolgreich ist, wird hostFound() ausgegeben und QAbstractSocket gibt ConnectingState ein. Dann wird versucht, eine Verbindung zu der Adresse oder den Adressen herzustellen, die von der Suche zurückgegeben wurden. Wenn eine Verbindung zustande kommt, gibt QAbstractSocket ConnectedState ein und sendet connected().

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

hostName kann eine IP-Adresse in Stringform (z. B. "43.195.83.32") oder ein Hostname (z. B. "example.com") sein. QAbstractSocket führt nur bei Bedarf eine Suche durch. port ist in nativer Byte-Reihenfolge.

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

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

Dies ist eine überladene Funktion.

Versucht, eine Verbindung zu address auf Port port herzustellen.

[signal] void QAbstractSocket::connected()

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

Hinweis: Auf einigen Betriebssystemen kann das connected()-Signal direkt vom connectToHost()-Aufruf für Verbindungen zum localhost ausgegeben werden.

Siehe auch connectToHost() und disconnected().

[virtual] void QAbstractSocket::disconnectFromHost()

Versucht, den Socket zu schließen. Wenn noch Daten darauf warten, geschrieben zu werden, wechselt QAbstractSocket 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 connectToHost().

[signal] void QAbstractSocket::disconnected()

Dieses Signal wird ausgegeben, wenn die Verbindung zur Steckdose unterbrochen wurde.

Achtung! Wenn Sie die sender() dieses Signals in einem mit ihm verbundenen Slot löschen 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 ausgegeben, wenn ein Fehler aufgetreten ist. Der Parameter socketError beschreibt die Art des aufgetretenen Fehlers.

Wenn dieses Signal ausgegeben wird, kann es sein, dass der Socket nicht für einen erneuten Verbindungsversuch bereit ist. In diesem Fall sollte der Versuch, die Verbindung wiederherzustellen, aus der Ereignisschleife heraus erfolgen. Verwenden Sie zum Beispiel QChronoTimer::singleShot() mit 0ns als Timeout.

QAbstractSocket::SocketError QChronoTimer::singleShot() ist kein registrierter Metatyp, daher müssen Sie ihn für Warteschlangenverbindungen mit Q_DECLARE_METATYPE() und qRegisterMetaType() registrieren.

Siehe auch error(), errorString() und Benutzerdefinierte Qt-Typen erstellen.

bool QAbstractSocket::flush()

Diese Funktion schreibt so viel wie möglich aus dem internen Schreibpuffer in den zugrunde liegenden Netzwerksocket, 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 QAbstractSocket 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 QAbstractSocket 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().

[signal] void QAbstractSocket::hostFound()

Dieses Signal wird ausgegeben, nachdem connectToHost() aufgerufen wurde und der Host-Lookup erfolgreich war.

Hinweis: Seit Qt 4.6.3 kann QAbstractSocket hostFound() direkt nach dem Aufruf von connectToHost() ausgeben, da ein DNS-Ergebnis zwischengespeichert worden sein könnte.

Siehe auch connected().

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

Reimplements: 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 Zustand des Sockets muss ConnectedState sein, bevor gelesen und geschrieben werden kann.

Siehe auch state().

QHostAddress QAbstractSocket::localAddress() const

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

Dies ist normalerweise die Haupt-IP-Adresse des Hosts, kann aber auch QHostAddress::LocalHost (127.0.0.1) für Verbindungen zum lokalen Host sein.

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

quint16 QAbstractSocket::localPort() const

Gibt die Host-Portnummer (in nativer Byte-Reihenfolge) des lokalen Sockets zurück, falls vorhanden; 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 der verbundenen Gegenstelle zurück, wenn sich der Socket in ConnectedState befindet; andernfalls wird QHostAddress::Null zurückgegeben.

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

QString QAbstractSocket::peerName() const

Gibt den Namen der Gegenstelle zurück, wie in connectToHost() angegeben, oder ein leeres QString, wenn connectToHost() nicht aufgerufen wurde.

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

quint16 QAbstractSocket::peerPort() const

Gibt den Port der verbundenen Gegenstelle 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. Wenn das Protokoll-Tag gesetzt ist, wird es an QNetworkProxyQuery übergeben, wenn dieses intern erstellt wird, 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 für die Anwendung abfragt.

Siehe auch setProxy(), QNetworkProxy, und QNetworkProxyFactory.

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

Dieses Signal kann ausgegeben werden, wenn ein proxy verwendet wird, das eine Authentifizierung erfordert. Das authenticator Objekt kann dann mit den erforderlichen Details ausgefü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 der Authenticator nicht mit neuen Informationen ausgefüllt wurde, wenn das Signal zurückkehrt.

Siehe auch QAuthenticator und QNetworkProxy.

qint64 QAbstractSocket::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 Vorgabe) 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)

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

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

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

[virtual] void QAbstractSocket::resume()

Setzt die Datenübertragung auf dem 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() zu ändern, nachdem eine Verbindung hergestellt worden ist. Diese Funktion wird üblicherweise von Proxy-Verbindungen für virtuelle Verbindungseinstellungen verwendet.

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

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

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

Setzt den Port auf der lokalen Seite einer Verbindung auf port.

Sie können diese Funktion in einer Unterklasse von QAbstractSocket aufrufen, um den Rückgabewert der Funktion localPort() zu ändern, nachdem eine Verbindung hergestellt worden ist. Diese Funktion wird üblicherweise von Proxy-Verbindungen für virtuelle Verbindungseinstellungen verwendet.

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

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

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

Legt fest, ob beim Empfang 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(). Wenn er auf PauseOnSslErrors gesetzt ist, wird die Datenübertragung auf dem Socket angehalten und muss durch den Aufruf von resume() explizit wieder aktiviert werden. Standardmäßig ist diese Option auf PauseNever gesetzt. Diese Option muss aufgerufen werden, bevor eine Verbindung zum Server hergestellt wird, da sie sonst zu undefiniertem Verhalten führt.

Siehe auch pauseMode() und resume().

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

Setzt die Adresse der entfernten Seite der Verbindung auf address.

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

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

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

Setzt den Hostnamen der Gegenstelle auf name.

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

Siehe auch peerName().

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

Setzt den Port der entfernten Seite der Verbindung auf port.

Sie können diese Funktion in einer Unterklasse von QAbstractSocket aufrufen, um den Rückgabewert der Funktion peerPort() zu ändern, nachdem eine Verbindung hergestellt worden ist. Diese Funktion wird häufig von 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)

Setzt den expliziten Netzwerk-Proxy für diesen Socket auf networkProxy.

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 Einstellungen der Anwendung verwendet: wenn ein Proxy mit QNetworkProxy::setApplicationProxy gesetzt ist, wird er diesen verwenden; andernfalls, wenn eine Factory mit QNetworkProxyFactory::setApplicationProxyFactory gesetzt ist, wird er diese Factory mit dem Typ QNetworkProxyQuery::TcpSocket abfragen.

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

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

Setzt die Größe des internen Lesepuffers von QAbstractSocket auf size Bytes.

Wenn die Puffergröße auf eine bestimmte Größe begrenzt ist, wird QAbstractSocket 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 Ihren Socket vor dem Empfang zu vieler Daten schützen wollen, was dazu führen könnte, dass Ihrer Anwendung der Speicher ausgeht.

Nur QTcpSocket verwendet den internen Puffer von QAbstractSocket; QUdpSocket verwendet überhaupt keine Pufferung, sondern verlässt sich auf die implizite Pufferung durch das Betriebssystem. Aus diesem Grund hat der Aufruf dieser Funktion auf QUdpSocket keine Auswirkungen.

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 geht in den durch socketState angegebenen Socket-Status über. Lese- und Schreibpuffer werden geleert, wobei alle anstehenden 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 option auf den durch value beschriebenen Wert.

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

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)

Reimplements: QIODevice::skipData(qint64 maxSize).

[virtual] qintptr QAbstractSocket::socketDescriptor() const

Gibt den nativen Socket-Deskriptor des QAbstractSocket -Objekts zurück, falls 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 QAbstractSocket in UnconnectedState ist.

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 (TCP, UDP oder andere) zurück.

Siehe auch QTcpSocket und QUdpSocket.

QAbstractSocket::SocketState QAbstractSocket::state() const

Gibt den Zustand des Sockets zurück.

Siehe auch error().

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

Dieses Signal wird ausgesendet, wenn sich der Zustand von QAbstractSocket ändert. Der Parameter socketState ist der neue Zustand.

QAbstractSocket::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 QAbstractSocket::waitForBytesWritten(int msecs = 30000)

Reimplements: QIODevice::waitForBytesWritten(int msecs).

Diese Funktion blockiert, bis mindestens ein Byte auf den Socket geschrieben wurde und das Signal bytesWritten() 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 das Signal bytesWritten() ausgegeben wurde; andernfalls gibt sie false zurück (wenn ein Fehler aufgetreten ist oder die Zeit für die Operation abgelaufen ist).

Hinweis: Diese Funktion kann unter Windows zufällig fehlschlagen. Erwägen Sie die Verwendung der Ereignisschleife und des Signals bytesWritten(), wenn Ihre Software unter Windows läuft.

Siehe auch waitForReadyRead().

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

Wenn msecs -1 ist, wird diese Funktion nicht abgebrochen.

Hinweis: Diese Funktion kann etwas länger als msecs warten, je nachdem, wie lange es dauert, die Hostsuche abzuschließen.

Hinweis: Bei mehreren Aufrufen dieser Funktion wird die Zeit nicht kumuliert. Wenn die Funktion eine Zeitüberschreitung aufweist, wird der Verbindungsvorgang abgebrochen.

Hinweis: Diese Funktion kann unter Windows zufällig fehlschlagen. Erwägen Sie die Verwendung der Ereignisschleife und des Signals connected(), wenn Ihre Software unter Windows ausgeführt werden soll.

Siehe auch connectToHost() und connected().

[virtual] bool QAbstractSocket::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 QAbstractSocket 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->disconnectFromHost();if (socket->state() == QAbstractSocket::UnconnectedState ||  socket->waitForDisconnected(1000)) {        qDebug("Disconnected!");
}

Wenn msecs -1 ist, wird diese Funktion nicht abgebrochen.

Hinweis: Diese Funktion kann unter Windows zufällig fehlschlagen. Erwägen Sie die Verwendung der Ereignisschleife und des Signals disconnected(), wenn Ihre Software unter Windows ausgeführt werden soll.

Siehe auch disconnectFromHost() und close().

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

Reimplements: QIODevice::waitForReadyRead(int msecs).

Diese Funktion blockiert, bis neue 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 das Signal readyRead() ausgegeben wurde und neue Daten zum Lesen zur Verfügung stehen; andernfalls gibt sie false zurück (wenn ein Fehler aufgetreten ist oder der Vorgang eine Zeitüberschreitung hatte).

Hinweis: Diese Funktion kann unter Windows zufällig fehlschlagen. Erwägen Sie die Verwendung der Ereignisschleife und des Signals readyRead(), wenn Ihre Software unter Windows ausgeführt werden soll.

Siehe auch waitForBytesWritten().

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

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.