Sur cette page

QSctpServer Class

La classe QSctpServer fournit un serveur basé sur le protocole SCTP. Plus d'informations...

En-tête : #include <QSctpServer>
CMake : find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake : QT += network
Héritages : QTcpServer

Fonctions publiques

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

Fonctions protégées réimplémentées

virtual void incomingConnection(qintptr socketDescriptor) override

Description détaillée

SCTP (Stream Control Transmission Protocol) est un protocole de couche de transport jouant un rôle similaire à celui des protocoles populaires TCP et UDP. Comme UDP, SCTP est orienté message, mais il assure un transport fiable et séquentiel des messages avec un contrôle de congestion comme TCP. Voir la documentation de QSctpSocket pour plus de détails sur le protocole.

QSctpServer est une sous-classe de commodité de QTcpServer qui vous permet d'accepter des connexions de socket SCTP entrantes soit en émulation TCP, soit en mode datagramme.

La façon la plus courante d'utiliser QSctpServer est de construire un objet et de définir le nombre maximum de canaux que le serveur est prêt à prendre en charge, en appelant setMaximumChannelCount(). Vous pouvez définir le mode d'émulation TCP en passant un argument négatif dans cet appel. De plus, une valeur spéciale de 0 (la valeur par défaut) indique d'utiliser la valeur de l'homologue comme nombre réel de canaux. La nouvelle connexion entrante hérite de ce nombre à partir du descripteur de socket du serveur et l'ajuste en fonction des paramètres du point de terminaison distant.

En mode d'émulation TCP, les clients acceptés utilisent un seul flux continu d'octets pour la transmission des données, et QSctpServer agit comme un simple QTcpServer. Appelez nextPendingConnection() pour accepter la connexion en attente en tant que QTcpSocket connecté. La fonction renvoie un pointeur vers un QTcpSocket dans QAbstractSocket::ConnectedState que vous pouvez utiliser pour communiquer avec le client. Ce mode ne donne accès qu'aux fonctions de base du protocole SCTP. La socket transmet des paquets SCTP sur IP au niveau du système et interagit avec l'application via l'interface QTcpSocket.

En revanche, le mode datagramme est axé sur les messages et permet une transmission simultanée complète de plusieurs flux de données entre les points d'extrémité. Appelez nextPendingDatagramConnection() pour accepter la connexion en mode datagramme en attente en tant que connexion QSctpSocket.

Remarque : cette classe n'est pas prise en charge sur la plate-forme Windows.

Voir également QTcpServer, QSctpSocket, et QAbstractSocket.

Documentation des fonctions membres

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

Construit un objet QSctpServer.

Définit le mode de fonctionnement du datagramme. L'argument parent est transmis au constructeur de QObject.

Voir aussi setMaximumChannelCount(), listen() et setSocketDescriptor().

[virtual noexcept] QSctpServer::~QSctpServer()

Détruit l'objet QSctpServer. Si le serveur est à l'écoute de connexions, le socket est automatiquement fermé.

Voir aussi close().

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

Réimplémente : QTcpServer::incomingConnection(qintptr socketDescriptor).

int QSctpServer::maximumChannelCount() const

Renvoie le nombre maximal de canaux que les sockets acceptées peuvent supporter.

Une valeur de 0 (par défaut) signifie que le nombre de canaux de connexion est défini par le point de terminaison distant.

Retourne -1 si QSctpServer fonctionne en mode d'émulation TCP.

Voir aussi setMaximumChannelCount().

QSctpSocket *QSctpServer::nextPendingDatagramConnection()

Renvoie la prochaine connexion en mode datagramme en attente sous la forme d'un objet connecté QSctpSocket.

La connexion en mode datagramme permet une communication orientée message et multi-flux.

La socket est créée en tant qu'enfant du serveur, ce qui signifie qu'elle est automatiquement supprimée lorsque l'objet QSctpServer est détruit. Il est toutefois conseillé de supprimer explicitement l'objet lorsque vous n'en avez plus besoin, afin d'éviter de gaspiller de la mémoire.

Cette fonction renvoie null s'il n'y a pas de connexions en mode datagramme en attente.

Remarque : l'objet QSctpSocket renvoyé ne peut pas être utilisé par un autre thread. Si vous souhaitez utiliser une connexion entrante depuis un autre thread, vous devez surcharger incomingConnection().

Voir aussi hasPendingConnections(), nextPendingConnection() et QSctpSocket.

void QSctpServer::setMaximumChannelCount(int count)

Définit le nombre maximal de canaux que le serveur est prêt à prendre en charge en mode datagramme, à count. Si count est égal à 0, la valeur du nombre maximal de canaux de l'extrémité sera utilisée. La valeur négative de count définit un mode d'émulation TCP.

Cette méthode ne peut être appelée que si QSctpServer est dans l'état "UnconnectedState".

Voir également maximumChannelCount() et 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.