QSctpServer Class

Die Klasse QSctpServer bietet einen SCTP-basierten Server. Mehr...

Kopfzeile: #include <QSctpServer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Vererbungen: QTcpServer

Öffentliche Funktionen

QSctpServer(QObject *parent = nullptr)
virtual ~QSctpServer()
int maximumChannelCount() const
QSctpSocket *nextPendingDatagramConnection()
void setMaximumChannelCount(int count)

Reimplementierte geschützte Funktionen

virtual void incomingConnection(qintptr socketDescriptor) override

Detaillierte Beschreibung

SCTP (Stream Control Transmission Protocol) ist ein Transportschichtprotokoll, das eine ähnliche Rolle wie die bekannten Protokolle TCP und UDP spielt. Wie UDP ist SCTP nachrichtenorientiert, aber es gewährleistet einen zuverlässigen, sequenziellen Transport von Nachrichten mit Staukontrolle wie TCP. Weitere Einzelheiten zum Protokoll finden Sie in der Dokumentation QSctpSocket.

QSctpServer ist eine bequeme Unterklasse von QTcpServer, die es Ihnen ermöglicht, eingehende SCTP-Socket-Verbindungen entweder in der TCP-Emulation oder im Datagramm-Modus zu akzeptieren.

Der gebräuchlichste Weg, QSctpServer zu verwenden, besteht darin, ein Objekt zu konstruieren und die maximale Anzahl von Kanälen, die der Server zu unterstützen bereit ist, durch den Aufruf von setMaximumChannelCount() festzulegen. Sie können den TCP-Emulationsmodus einstellen, indem Sie ein negatives Argument in diesem Aufruf übergeben. Ein spezieller Wert von 0 (der Standardwert) bedeutet, dass der Wert der Gegenstelle als tatsächliche Anzahl von Kanälen verwendet wird. Die neue eingehende Verbindung erbt diese Zahl aus dem Socket-Deskriptor des Servers und passt sie entsprechend den Einstellungen des entfernten Endpunkts an.

Im TCP-Emulationsmodus verwenden akzeptierte Clients einen einzelnen kontinuierlichen Bytestrom für die Datenübertragung, und QSctpServer verhält sich wie ein einfacher QTcpServer. Rufen Sie nextPendingConnection() auf, um die anstehende Verbindung als eine verbundene QTcpSocket zu akzeptieren. Die Funktion gibt einen Zeiger auf einen QTcpSocket in QAbstractSocket::ConnectedState zurück, den Sie für die Kommunikation mit dem Client verwenden können. Dieser Modus ermöglicht nur den Zugriff auf grundlegende SCTP-Protokollfunktionen. Der Socket überträgt SCTP-Pakete über IP auf Systemebene und interagiert über die Schnittstelle QTcpSocket mit der Anwendung.

Im Gegensatz dazu ist der Datagramm-Modus nachrichtenorientiert und ermöglicht eine vollständige gleichzeitige Übertragung mehrerer Datenströme zwischen Endpunkten. Rufen Sie nextPendingDatagramConnection() auf, um die anstehende Verbindung im Datagrammmodus als eine verbundene QSctpSocket zu akzeptieren.

Hinweis: Diese Klasse wird auf der Windows-Plattform nicht unterstützt.

Siehe auch QTcpServer, QSctpSocket, und QAbstractSocket.

Dokumentation der Mitgliedsfunktionen

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

Konstruiert ein QSctpServer-Objekt.

Legt den Datagramm-Betriebsmodus fest. Das Argument parent wird an den Konstruktor von QObject übergeben.

Siehe auch setMaximumChannelCount(), listen(), und setSocketDescriptor().

[virtual noexcept] QSctpServer::~QSctpServer()

Zerstört das Objekt QSctpServer. Wenn der Server auf Verbindungen wartet, wird der Socket automatisch geschlossen.

Siehe auch close().

[override virtual protected] void QSctpServer::incomingConnection(qintptr socketDescriptor)

Reimplements: QTcpServer::incomingConnection(qintptr socketDescriptor).

int QSctpServer::maximumChannelCount() const

Gibt die maximale Anzahl der Kanäle zurück, die die akzeptierten Sockets unterstützen können.

Ein Wert von 0 (Standard) bedeutet, dass die Anzahl der Verbindungskanäle vom entfernten Endpunkt festgelegt wird.

Gibt -1 zurück, wenn QSctpServer im TCP-Emulationsmodus läuft.

Siehe auch setMaximumChannelCount().

QSctpSocket *QSctpServer::nextPendingDatagramConnection()

Gibt die nächste anstehende Verbindung im Datagrammmodus als verbundenes QSctpSocket Objekt zurück.

Eine Verbindung im Datagrammmodus bietet eine nachrichtenorientierte Multi-Stream-Kommunikation.

Der Socket wird als Kind des Servers erstellt, was bedeutet, dass er automatisch gelöscht wird, wenn das QSctpServer Objekt zerstört wird. Es ist dennoch eine gute Idee, das Objekt explizit zu löschen, wenn Sie es nicht mehr benötigen, um Speicherplatz zu sparen.

Diese Funktion gibt null zurück, wenn es keine ausstehenden Verbindungen im Datagrammmodus gibt.

Hinweis: Das zurückgegebene QSctpSocket Objekt kann nicht von einem anderen Thread verwendet werden. Wenn Sie eine eingehende Verbindung von einem anderen Thread verwenden wollen, müssen Sie incomingConnection() überschreiben.

Siehe auch hasPendingConnections(), nextPendingConnection(), und QSctpSocket.

void QSctpServer::setMaximumChannelCount(int count)

Legt die maximale Anzahl von Kanälen fest, die der Server im Datagrammmodus unterstützen soll, und zwar auf count. Wenn count gleich 0 ist, wird der Wert für die maximale Anzahl von Kanälen am Endpunkt verwendet. Negativ count setzt einen TCP-Emulationsmodus.

Rufen Sie diese Methode nur auf, wenn QSctpServer im UnconnectedState ist.

Siehe auch maximumChannelCount() und QSctpSocket.

© 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.