Sur cette page

QTcpServer Class

La classe QTcpServer fournit un serveur basé sur TCP. Plus d'informations...

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

QSctpServer et QSslServer

Note : Toutes les fonctions de cette classe sont réentrantes.

Fonctions publiques

QTcpServer(QObject *parent = nullptr)
virtual ~QTcpServer()
void close()
QString errorString() const
virtual bool hasPendingConnections() const
bool isListening() const
bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)
(since 6.3) int listenBacklogSize() const
int maxPendingConnections() const
virtual QTcpSocket *nextPendingConnection()
void pauseAccepting()
QNetworkProxy proxy() const
void resumeAccepting()
QHostAddress serverAddress() const
QAbstractSocket::SocketError serverError() const
quint16 serverPort() const
(since 6.3) void setListenBacklogSize(int size)
void setMaxPendingConnections(int numConnections)
void setProxy(const QNetworkProxy &networkProxy)
bool setSocketDescriptor(qintptr socketDescriptor)
qintptr socketDescriptor() const
bool waitForNewConnection(int msec = 0, bool *timedOut = nullptr)

Signaux

void acceptError(QAbstractSocket::SocketError socketError)
void newConnection()
(since 6.4) void pendingConnectionAvailable()

Fonctions protégées

void addPendingConnection(QTcpSocket *socket)
virtual void incomingConnection(qintptr socketDescriptor)

Description détaillée

Cette classe permet d'accepter les connexions TCP entrantes. Vous pouvez spécifier le port ou demander à QTcpServer d'en choisir un automatiquement. Vous pouvez écouter sur une adresse spécifique ou sur toutes les adresses de la machine.

Appelez listen() pour que le serveur écoute les connexions entrantes. Le signal newConnection() est alors émis chaque fois qu'un client se connecte au serveur. Lorsque la connexion du client a été ajoutée à la file d'attente des connexions en attente à l'aide de la fonction addPendingConnection(), le signal pendingConnectionAvailable() est émis.

Appelez nextPendingConnection() pour accepter la connexion en attente en tant que connexion QTcpSocket. La fonction renvoie un pointeur vers un QTcpSocket dans QAbstractSocket::ConnectedState que vous pouvez utiliser pour communiquer avec le client.

En cas d'erreur, serverError() renvoie le type d'erreur et errorString() peut être appelé pour obtenir une description lisible par l'homme de ce qui s'est passé.

Lors de l'écoute de connexions, l'adresse et le port sur lesquels le serveur écoute sont disponibles sous serverAddress() et serverPort().

L'appel à close() permet à QTcpServer d'arrêter d'écouter les connexions entrantes.

Bien que QTcpServer soit principalement conçu pour être utilisé avec une boucle d'événements, il est possible de l'utiliser sans. Dans ce cas, vous devez utiliser waitForNewConnection(), qui bloque jusqu'à ce qu'une connexion soit disponible ou qu'un délai expire.

Voir aussi QTcpSocket, Fortune Server, Threaded Fortune Server, et Torrent Example.

Documentation sur les fonctions membres

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

Construit un objet QTcpServer.

parent est transmis au constructeur de QObject.

Voir aussi listen() et setSocketDescriptor().

[virtual noexcept] QTcpServer::~QTcpServer()

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

Tout client QTcpSocketencore connecté doit se déconnecter ou être reparti avant que le serveur ne soit supprimé.

Voir aussi close().

[signal] void QTcpServer::acceptError(QAbstractSocket::SocketError socketError)

Ce signal est émis lorsque l'acceptation d'une nouvelle connexion entraîne une erreur. Le paramètre socketError décrit le type d'erreur qui s'est produite.

Voir aussi pauseAccepting() et resumeAccepting().

[protected] void QTcpServer::addPendingConnection(QTcpSocket *socket)

Cette fonction est appelée par QTcpServer::incomingConnection() pour ajouter socket à la liste des connexions entrantes en attente.

Remarque : n'oubliez pas d'appeler ce membre à partir de incomingConnection() réimplémenté si vous ne voulez pas casser le mécanisme des connexions en attente. Cette fonction émet le signal pendingConnectionAvailable() après l'ajout de la socket.

Voir aussi incomingConnection() et pendingConnectionAvailable().

void QTcpServer::close()

Ferme le serveur. Le serveur n'écoutera plus les connexions entrantes.

Voir aussi listen().

QString QTcpServer::errorString() const

Renvoie une description lisible par l'homme de la dernière erreur survenue.

Voir aussi serverError().

[virtual] bool QTcpServer::hasPendingConnections() const

Renvoie true si le serveur a une connexion en cours, sinon renvoie false.

Voir aussi nextPendingConnection() et setMaxPendingConnections().

[virtual protected] void QTcpServer::incomingConnection(qintptr socketDescriptor)

Cette fonction virtuelle est appelée par QTcpServer lorsqu'une nouvelle connexion est disponible. L'argument socketDescriptor est le descripteur de socket natif pour la connexion acceptée.

L'implémentation de base crée un QTcpSocket, définit le descripteur de socket et stocke ensuite le QTcpSocket dans une liste interne de connexions en attente. Enfin, la fonction newConnection() est émise.

Réimplémentez cette fonction pour modifier le comportement du serveur lorsqu'une connexion est disponible.

Si le serveur utilise QNetworkProxy, la fonction socketDescriptor peut ne pas être utilisable avec les fonctions de socket natives et ne doit être utilisée qu'avec QTcpSocket::setSocketDescriptor().

Note : Si une autre socket est créée lors de la réimplémentation de cette méthode, elle doit être ajoutée au mécanisme des connexions en attente en appelant addPendingConnection().

Remarque : si vous souhaitez gérer une connexion entrante en tant que nouvel objet QTcpSocket dans un autre thread, vous devez passer l'objet socketDescriptor à l'autre thread, y créer l'objet QTcpSocket et utiliser sa méthode setSocketDescriptor().

Voir également newConnection(), nextPendingConnection() et addPendingConnection().

bool QTcpServer::isListening() const

Renvoie true si le serveur est en train d'écouter les connexions entrantes ; sinon, il renvoie false.

Voir aussi listen().

bool QTcpServer::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)

Indique au serveur d'écouter les connexions entrantes sur l'adresse address et le port port. Si port est 0, un port est choisi automatiquement. Si address est QHostAddress::Any, le serveur écoutera sur toutes les interfaces réseau.

Retourne true en cas de succès ; sinon, retourne false.

Voir aussi isListening().

[since 6.3] int QTcpServer::listenBacklogSize() const

Renvoie la taille de la file d'attente des connexions à accepter.

Cette fonction a été introduite dans Qt 6.3.

Voir aussi setListenBacklogSize().

int QTcpServer::maxPendingConnections() const

Renvoie le nombre maximum de connexions acceptées en attente. La valeur par défaut est 30.

Voir aussi setMaxPendingConnections() et hasPendingConnections().

[signal] void QTcpServer::newConnection()

Ce signal est émis à chaque fois qu'une nouvelle connexion est disponible, qu'elle ait été ajoutée ou non à la file d'attente des connexions en attente.

Voir aussi hasPendingConnections() et nextPendingConnection().

[virtual] QTcpSocket *QTcpServer::nextPendingConnection()

Renvoie la prochaine connexion en attente sous la forme d'un objet QTcpSocket connecté.

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

nullptr est renvoyé si cette fonction est appelée alors qu'il n'y a pas de connexions en cours.

Remarque : l'objet QTcpSocket 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 également hasPendingConnections().

void QTcpServer::pauseAccepting()

Interrompt l'acceptation de nouvelles connexions. Les connexions en attente restent dans la file d'attente.

Voir aussi resumeAccepting().

[private signal, since 6.4] void QTcpServer::pendingConnectionAvailable()

Ce signal est émis chaque fois qu'une nouvelle connexion a été ajoutée à la file d'attente des connexions en attente.

Remarque : il s'agit d'un signal privé. Il peut être utilisé dans les connexions de signal mais ne peut pas être émis par l'utilisateur.

Cette fonction a été introduite dans Qt 6.4.

Voir aussi hasPendingConnections() et nextPendingConnection().

QNetworkProxy QTcpServer::proxy() const

Renvoie le proxy réseau pour cette socket. Par défaut, QNetworkProxy::DefaultProxy est utilisé.

Voir aussi setProxy() et QNetworkProxy.

void QTcpServer::resumeAccepting()

Reprend l'acceptation de nouvelles connexions.

Voir aussi pauseAccepting().

QHostAddress QTcpServer::serverAddress() const

Renvoie l'adresse du serveur si celui-ci est à l'écoute des connexions ; sinon, il renvoie QHostAddress::Null.

Voir aussi serverPort() et listen().

QAbstractSocket::SocketError QTcpServer::serverError() const

Renvoie un code d'erreur pour la dernière erreur survenue.

Voir aussi errorString().

quint16 QTcpServer::serverPort() const

Renvoie le port du serveur si celui-ci est à l'écoute des connexions ; sinon, renvoie 0.

Voir aussi serverAddress() et listen().

[since 6.3] void QTcpServer::setListenBacklogSize(int size)

Définit la taille de la file d'attente des connexions à accepter à size. Le système d'exploitation peut réduire ou ignorer cette valeur. Par défaut, la taille de la file d'attente est de 50.

Remarque : Cette propriété doit être définie avant d'appeler listen().

Cette fonction a été introduite dans Qt 6.3.

Voir aussi listenBacklogSize().

void QTcpServer::setMaxPendingConnections(int numConnections)

Fixe le nombre maximal de connexions acceptées en attente à numConnections. QTcpServer n'acceptera pas plus de numConnections connexions entrantes avant que nextPendingConnection() ne soit appelé. Par défaut, la limite est de 30 connexions en attente.

Les clients peuvent encore se connecter après que le serveur a atteint son nombre maximal de connexions en attente (c'est-à-dire que QTcpSocket peut encore émettre le signal connected()). QTcpServer cessera d'accepter les nouvelles connexions, mais le système d'exploitation peut encore les garder dans la file d'attente.

Voir aussi maxPendingConnections() et hasPendingConnections().

void QTcpServer::setProxy(const QNetworkProxy &networkProxy)

Définit le proxy réseau explicite pour cette socket à networkProxy.

Pour désactiver l'utilisation d'un proxy pour cette socket, utilisez le type de proxy QNetworkProxy::NoProxy:

server->setProxy(QNetworkProxy::NoProxy);

Voir aussi proxy() et QNetworkProxy.

bool QTcpServer::setSocketDescriptor(qintptr socketDescriptor)

Définit le descripteur de socket que ce serveur doit utiliser lorsqu'il écoute les connexions entrantes à socketDescriptor. Renvoie true si la socket est définie avec succès ; sinon, renvoie false.

La socket est supposée être en état d'écoute.

Voir aussi socketDescriptor() et isListening().

qintptr QTcpServer::socketDescriptor() const

Renvoie le descripteur de socket natif que le serveur utilise pour écouter les instructions entrantes, ou -1 si le serveur n'écoute pas.

Si le serveur utilise QNetworkProxy, le descripteur retourné peut ne pas être utilisable avec les fonctions de socket natives.

Voir aussi setSocketDescriptor() et isListening().

bool QTcpServer::waitForNewConnection(int msec = 0, bool *timedOut = nullptr)

Attend au maximum msec millisecondes ou jusqu'à ce qu'une connexion entrante soit disponible. Renvoie true si une connexion est disponible ; sinon, renvoie false. Si l'opération a été interrompue et que timedOut n'est pas nullptr, *timedOut sera défini comme vrai.

Il s'agit d'un appel de fonction bloquant. Son utilisation est déconseillée dans une application GUI monotâche, car l'ensemble de l'application cessera de répondre jusqu'au retour de la fonction. waitForNewConnection() est surtout utile lorsqu'il n'y a pas de boucle d'événements disponible.

L'alternative non bloquante consiste à se connecter au signal newConnection().

Si msec vaut -1, cette fonction n'est pas interrompue.

Voir aussi hasPendingConnections() et nextPendingConnection().

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