QSctpServer Class
Die Klasse „QSctpServer“ stellt einen SCTP-basierten Server bereit. Mehr...
| Header: | #include <QSctpServer> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
| Erbt von: | QTcpServer |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QSctpServer ist Teil der Netzwerkprogrammier-API.
Öffentliche Funktionen
| QSctpServer(QObject *parent = nullptr) | |
| virtual | ~QSctpServer() |
| int | maximumChannelCount() const |
| QSctpSocket * | nextPendingDatagramConnection() |
| void | setMaximumChannelCount(int count) |
Neu implementierte geschützte Funktionen
| virtual void | incomingConnection(qintptr socketDescriptor) override |
Ausführliche Beschreibung
SCTP (Stream Control Transmission Protocol) ist ein Protokoll der Transportschicht, das eine ähnliche Rolle wie die gängigen Protokolle TCP und UDP erfüllt. Wie UDP ist SCTP nachrichtenorientiert, gewährleistet jedoch wie TCP einen zuverlässigen, sequenziellen Transport von Nachrichten mit Überlastungskontrolle. Weitere Details zum Protokoll finden Sie in der Dokumentation zu „ QSctpSocket “.
QSctpServer ist eine Komfortunterklasse von ` QTcpServer `, mit der Sie eingehende SCTP-Socket-Verbindungen entweder im TCP-Emulationsmodus oder im Datagramm-Modus annehmen können.
Die gängigste Art, `QSctpServer` zu verwenden, besteht darin, ein Objekt zu erstellen und die maximale Anzahl von Kanälen festzulegen, die der Server unterstützen kann, indem man ` setMaximumChannelCount()` aufruft. Sie können den TCP-Emulationsmodus festlegen, indem Sie bei diesem Aufruf ein negatives Argument übergeben. Außerdem bedeutet der spezielle Wert 0 (Standard), dass der Wert des Gegenübers als tatsächliche Anzahl der Kanäle verwendet wird. Die neue eingehende Verbindung übernimmt diese Zahl vom Server-Socket-Deskriptor und passt sie entsprechend den Einstellungen des entfernten Endpunkts an.
Im TCP-Emulationsmodus verwenden akzeptierte Clients einen einzigen kontinuierlichen Byte-Strom für die Datenübertragung, und QSctpServer verhält sich wie ein einfacher ` QTcpServer`. Rufen Sie ` nextPendingConnection()` auf, um die ausstehende Verbindung als verbundenes ` QTcpSocket` anzunehmen. Die Funktion gibt einen Zeiger auf ein ` QTcpSocket ` in ` QAbstractSocket::ConnectedState ` zurück, das Sie für die Kommunikation mit dem Client verwenden können. Dieser Modus gewährt nur Zugriff auf grundlegende Funktionen des SCTP-Protokolls. Der Socket überträgt SCTP-Pakete auf Systemebene über IP und interagiert über die Schnittstelle „ QTcpSocket “ mit der Anwendung.
Im Gegensatz dazu ist der Datagramm-Modus nachrichtenorientiert und ermöglicht die vollständige gleichzeitige Übertragung mehrerer Datenströme zwischen Endpunkten. Rufen Sie ` nextPendingDatagramConnection()` auf, um die ausstehende Verbindung im Datagramm-Modus als verbundenes ` QSctpSocket` anzunehmen.
Hinweis: Diese Klasse wird auf der Windows-Plattform nicht unterstützt.
Siehe auch „ QTcpServer “, „ QSctpSocket “ und „ QAbstractSocket “.
Dokumentation zu den Mitgliedsfunktionen
[explicit] QSctpServer::QSctpServer(QObject *parent = nullptr)
Erstellt 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()
Löscht 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)
Implementiert neu: ` QTcpServer::incomingConnection` (qintptr `socketDescriptor`).
int QSctpServer::maximumChannelCount() const
Gibt die maximale Anzahl an Kanälen zurück, die die akzeptierten Sockets unterstützen können.
Der Wert 0 (Standard) bedeutet, dass die Anzahl der Verbindungskanäle vom entfernten Endpunkt festgelegt wird.
Gibt -1 zurück, wenn „ QSctpServer “ im TCP-Emulationsmodus ausgeführt wird.
Siehe auch ` setMaximumChannelCount()`.
QSctpSocket *QSctpServer::nextPendingDatagramConnection()
Gibt die nächste ausstehende Verbindung im Datagramm-Modus als verbundenes „ QSctpSocket “-Objekt zurück.
Eine Verbindung im Datagramm-Modus ermöglicht eine nachrichtenorientierte Kommunikation mit mehreren Datenströmen.
Der Socket wird als untergeordnetes Objekt des Servers erstellt, was bedeutet, dass er automatisch gelöscht wird, wenn das ` QSctpServer `-Objekt zerstört wird. Es empfiehlt sich dennoch, das Objekt explizit zu löschen, wenn Sie es nicht mehr benötigen, um Speicherplatzverschwendung zu vermeiden.
Diese Funktion gibt null zurück, wenn keine ausstehenden Verbindungen im Datagramm-Modus vorhanden sind.
Hinweis: Das zurückgegebene ` QSctpSocket `-Objekt kann nicht von einem anderen Thread aus verwendet werden. Wenn Sie eine eingehende Verbindung von einem anderen Thread aus nutzen möchten, müssen Sie ` incomingConnection()` überschreiben.
Siehe auch ` hasPendingConnections()`, ` nextPendingConnection()` und ` QSctpSocket`.
void QSctpServer::setMaximumChannelCount(int count)
Legt die maximale Anzahl an Kanälen fest, die der Server im Datagramm-Modus unterstützen kann, auf „ count “. Ist „ count “ gleich 0, wird die maximale Kanalanzahl des Endpunkts verwendet. Ein negativer Wert für „ count “ aktiviert den TCP-Emulationsmodus.
Rufen Sie diese Methode nur auf, wenn sich „ QSctpServer “ im Zustand „UnconnectedState“ befindet.
Siehe auch „ maximumChannelCount()“ und „ QSctpSocket “.
© 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.