Sur cette page

QLocalServer Class

La classe QLocalServer fournit un serveur local basé sur des sockets. En savoir plus...

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

Types publics

enum SocketOption { NoOptions, UserAccessOption, GroupAccessOption, OtherAccessOption, WorldAccessOption, AbstractNamespaceOption }
flags SocketOptions

Propriétés

Fonctions publiques

QLocalServer(QObject *parent = nullptr)
virtual ~QLocalServer()
QBindable<QLocalServer::SocketOptions> bindableSocketOptions()
void close()
QString errorString() const
QString fullServerName() const
virtual bool hasPendingConnections() const
bool isListening() const
bool listen(const QString &name)
bool listen(qintptr socketDescriptor)
(since 6.3) int listenBacklogSize() const
int maxPendingConnections() const
virtual QLocalSocket *nextPendingConnection()
QAbstractSocket::SocketError serverError() const
QString serverName() const
(since 6.3) void setListenBacklogSize(int size)
void setMaxPendingConnections(int numConnections)
void setSocketOptions(QLocalServer::SocketOptions options)
qintptr socketDescriptor() const
QLocalServer::SocketOptions socketOptions() const
bool waitForNewConnection(int msec = 0, bool *timedOut = nullptr)

Signaux

void newConnection()

Membres publics statiques

bool removeServer(const QString &name)

Fonctions protégées

(since 6.8) void addPendingConnection(QLocalSocket *socket)
virtual void incomingConnection(quintptr socketDescriptor)

Description détaillée

Cette classe permet d'accepter les connexions entrantes via un socket local.

Appelez listen() pour que le serveur commence à écouter les connexions entrantes sur une clé spécifiée. Le signal newConnection() est alors émis chaque fois qu’un client se connecte au serveur.

Appelez nextPendingConnection() pour accepter la connexion en attente en tant qu’ QLocalSocket connecté. La fonction renvoie un pointeur vers un QLocalSocket qui peut être utilisé pour communiquer avec le client.

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

Lorsqu’il est à l’écoute des connexions, le nom sous lequel le serveur est à l’écoute est disponible via serverName().

L'appel de ` close()` arrête l'écoute des connexions entrantes par QLocalServer.

Bien que QLocalServer soit conçu pour être utilisé avec une boucle d’événements, il est possible de l’utiliser sans celle-ci. Dans ce cas, vous devez utiliser la fonction ` waitForNewConnection()`, qui reste bloquée jusqu’à ce qu’une connexion soit disponible ou qu’un délai d’expiration soit atteint.

Voir également QLocalSocket et QTcpServer.

Documentation sur les types de membres

enum QLocalServer::SocketOption
flags QLocalServer::SocketOptions

Cette énumération décrit les options possibles pouvant être utilisées pour créer le socket. Elle modifie les droits d'accès sur les plateformes (Linux, Windows) qui prennent en charge les droits d'accès au socket. La signification des paramètres « GroupAccess » et « OtherAccess » peut varier légèrement selon la plateforme. Sous Linux et Android, il est possible d'utiliser des sockets avec des adresses abstraites ; les droits d'accès aux sockets n'ont alors aucune signification pour ces sockets.

ConstanteValeurDescription
QLocalServer::NoOptions0x0Aucune restriction d’accès n’a été définie.
QLocalServer::UserAccessOption0x01L'accès est limité à l'utilisateur ayant créé le socket.
QLocalServer::GroupAccessOption0x2Sous Linux, l'accès est limité au même groupe, mais pas à l'utilisateur qui a créé le socket. Sous Windows, l'accès est limité au groupe principal du processus.
QLocalServer::OtherAccessOption0x4L'accès est ouvert à tous, sauf à l'utilisateur et au groupe ayant créé le socket sous Linux. L'accès est ouvert à tous sous Windows.
QLocalServer::WorldAccessOption0x7Aucune restriction d'accès.
QLocalServer::AbstractNamespaceOption0x8Le socket d'écoute sera créé dans l'espace de noms abstrait. Cet indicateur est spécifique à Linux. Sur les autres plateformes, pour des raisons de portabilité du code, cet indicateur est équivalent à WorldAccessOption.

Le type `SocketOptions` est un `typedef` pour ` QFlags<SocketOption>`. Il stocke une combinaison (ou) de valeurs `SocketOption`.

Voir également socketOptions.

Documentation des propriétés

[bindable] socketOptions : SocketOptions

Remarque : cette propriété prend en charge les liaisons de type « QProperty ».

Cette propriété contient les options de socket qui contrôlent le fonctionnement de celle-ci.

Par exemple, le socket peut restreindre l’accès aux identifiants utilisateur autorisés à s’y connecter.

Ces options doivent être définies avant l’appel de la fonction ` listen()`.

Dans certains cas, comme avec les sockets de domaine Unix sous Linux, l’accès au socket est déterminé par les permissions du système de fichiers et est créé en fonction de l’umask. La définition des indicateurs d’accès remplacera ce comportement et restreindra ou autorisera l’accès comme spécifié.

D’autres systèmes d’exploitation basés sur Unix, tels que macOS, ne respectent pas les permissions de fichiers pour les sockets de domaine Unix et disposent par défaut d’un accès universel (WorldAccess) ; ces indicateurs de permission n’auront donc aucun effet.

Sous Windows, la commande « UserAccessOption » suffit pour permettre à un processus sans privilèges élevés de se connecter à un serveur local créé par un processus disposant de privilèges élevés et exécuté par le même utilisateur. « GroupAccessOption » fait référence au groupe principal du processus (voir TokenPrimaryGroup dans la documentation Windows). « OtherAccessOption » fait référence au groupe bien connu « Everyone ».

Sur les plateformes Linux, il est possible de créer un socket dans l’espace de noms abstrait, qui est indépendant du système de fichiers. L’utilisation de ce type de socket implique d’ignorer les options de permissions. Sur les autres plateformes, AbstractNamespaceOption est équivalent à WorldAccessOption.

Par défaut, aucun indicateur n’est activé ; les droits d’accès sont ceux définis par défaut par la plateforme.

Fonctions d’accès :

QLocalServer::SocketOptions socketOptions() const
void setSocketOptions(QLocalServer::SocketOptions options)

Voir également listen().

Documentation des fonctions membres

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

Créer un nouveau serveur de sockets local avec l'parent fournie.

Voir également listen().

[virtual noexcept] QLocalServer::~QLocalServer()

Détruit l'objet ` QLocalServer `. Si le serveur est à l'écoute de connexions, celles-ci sont automatiquement fermées.

Tous les objets QLocalSockets clients encore connectés doivent soit se déconnecter, soit être rattachés à un autre parent avant que le serveur ne soit supprimé.

Voir aussi close().

[protected, since 6.8] void QLocalServer::addPendingConnection(QLocalSocket *socket)

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

Remarque : n’oubliez pas d’appeler ce membre depuis la fonction incomingConnection() réimplémentée si vous ne souhaitez pas perturber le fonctionnement du mécanisme des connexions en attente. Cette fonction émet le signal newConnection() une fois que le socket a été ajouté.

Cette fonction a été introduite dans Qt 6.8.

Voir également ` incomingConnection()` et ` newConnection()`.

void QLocalServer::close()

Cesser d'écouter les connexions entrantes. Les connexions existantes ne sont pas affectées, mais toute nouvelle connexion sera refusée.

Voir également isListening() et listen().

QString QLocalServer::errorString() const

Renvoie le message lisible par l'utilisateur correspondant à l'erreur actuelle signalée par serverError(). Si aucune chaîne appropriée n'est disponible, une chaîne vide est renvoyée.

Voir également serverError().

QString QLocalServer::fullServerName() const

Renvoie le chemin complet sur lequel le serveur est à l'écoute.

Remarque : cette fonction est spécifique à la plate-forme

Voir également listen() et serverName().

[virtual] bool QLocalServer::hasPendingConnections() const

Renvoie « true » si le serveur a une connexion en attente ; sinon, renvoie « false ».

Voir également nextPendingConnection() et setMaxPendingConnections().

[virtual protected] void QLocalServer::incomingConnection(quintptr socketDescriptor)

Cette fonction virtuelle est appelée par ` QLocalServer ` lorsqu'une nouvelle connexion est disponible. ` socketDescriptor ` est le descripteur de socket natif de la connexion acceptée.

L'implémentation de base crée un ` QLocalSocket`, définit le descripteur de socket, puis stocke ` QLocalSocket ` dans une liste interne de connexions en attente. Enfin, ` newConnection()` est émis.

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

Voir également newConnection(), nextPendingConnection() et QLocalSocket::setSocketDescriptor().

bool QLocalServer::isListening() const

Renvoie true si le serveur est à l'écoute des connexions entrantes, false dans le cas contraire.

Voir également listen() et close().

bool QLocalServer::listen(const QString &name)

Indique au serveur d’écouter les connexions entrantes sur name. Si le serveur est déjà en écoute, la fonction listen() échouera. Renvoie true en cas de succès, false dans le cas contraire.

name Il peut s'agir d'un simple nom ; QLocalServer déterminera alors le chemin d'accès spécifique à la plate-forme. La fonction serverName() renverra le nom qui a été passé à listen().

En général, on se contente de passer un nom tel que « foo », mais sous Unix, il peut également s’agir d’un chemin d’accès tel que « /tmp/foo » et sous Windows, d’un chemin de canal tel que « \\.\pipe\foo ».

Remarque : sous Unix, si le serveur a précédemment planté sans se fermer, la fonction listen() échouera avec une erreur AddressInUseError. Pour créer un nouveau serveur, il faut d’abord supprimer le fichier. Sous Windows, deux serveurs locaux peuvent écouter le même canal simultanément, mais chaque connexion entrante sera acheminée vers l’un d’entre eux.

Voir également serverName(), isListening() et close().

bool QLocalServer::listen(qintptr socketDescriptor)

Indique au serveur d’écouter les connexions entrantes sur socketDescriptor. La propriété renvoie false si le serveur est actuellement à l’écoute. Elle renvoie true en cas de succès ; sinon, elle renvoie false. Le socket doit être prêt à accepter de nouvelles connexions sans qu’aucune fonction spécifique à la plate-forme ne soit appelée. Le socket est configuré en mode non bloquant.

serverName(), fullServerName() peuvent renvoyer une chaîne de caractères contenant un nom si cette option est prise en charge par la plate-forme ; sinon, elles renvoient une chaîne vide QString. En particulier, les adresses des sockets dans l’espace de noms abstrait pris en charge par Linux ne donneront pas de noms utiles si elles contiennent des caractères non imprimables.

Voir également isListening() et close().

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

Renvoie la taille de la file d'attente des connexions en attente d'acceptation.

Cette fonction a été introduite dans Qt 6.3.

Voir également ` setListenBacklogSize()`.

int QLocalServer::maxPendingConnections() const

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

Voir également setMaxPendingConnections() et hasPendingConnections().

[signal] void QLocalServer::newConnection()

Ce signal est émis chaque fois qu'une nouvelle connexion est disponible.

Voir également hasPendingConnections() et nextPendingConnection().

[virtual] QLocalSocket *QLocalServer::nextPendingConnection()

Renvoie la connexion en attente suivante sous la forme d'un objet ` QLocalSocket ` connecté.

Le socket est créé en tant qu’enfant du serveur, ce qui signifie qu’il est automatiquement supprimé lorsque l’objet ` QLocalServer ` est détruit. Il est toutefois recommandé de supprimer explicitement l’objet lorsque vous n’en avez plus besoin, afin d’éviter tout gaspillage de mémoire.

nullptr est renvoyé si cette fonction est appelée alors qu’il n’y a aucune connexion en attente.

Voir également hasPendingConnections(), newConnection() et incomingConnection().

[static] bool QLocalServer::removeServer(const QString &name)

Supprime toute instance de serveur susceptible d'entraîner l'échec d'un appel à ` listen()` et renvoie ` true ` en cas de succès ; sinon, elle renvoie ` false`. Cette fonction est destinée à permettre la reprise après un plantage, lorsque l'instance de serveur précédente n'a pas été nettoyée.

Sous Windows, cette fonction ne fait rien ; sous Unix, elle supprime le fichier de socket indiqué par name.

Avertissement : veillez à ne pas supprimer les sockets d’instances en cours d’exécution.

QAbstractSocket::SocketError QLocalServer::serverError() const

Renvoie le type de l'erreur qui s'est produite en dernier ou NoError.

Voir également errorString().

QString QLocalServer::serverName() const

Renvoie le nom du serveur si celui-ci est à l'écoute ; sinon, renvoie QString().

Voir également listen() et fullServerName().

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

Définit la taille de la file d'attente des connexions en attente d'acceptation pour 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 la fonction ` listen()`.

Cette fonction a été introduite dans Qt 6.3.

Voir également ` listenBacklogSize()`.

void QLocalServer::setMaxPendingConnections(int numConnections)

Définit le nombre maximal de connexions acceptées en attente à numConnections. QLocalServer n'acceptera pas plus de numConnections connexions entrantes avant l'appel de nextPendingConnection().

Remarque : même si la fonction ` QLocalServer ` cesse d’accepter de nouvelles connexions une fois son nombre maximal de connexions en attente atteint, le système d’exploitation peut tout de même les conserver dans la file d’attente, ce qui entraînera l’affichage d’un message indiquant que le client est connecté.

Voir également maxPendingConnections() et hasPendingConnections().

qintptr QLocalServer::socketDescriptor() const

Renvoie le descripteur de socket natif utilisé par le serveur pour écouter les requêtes entrantes, ou -1 si le serveur n'est pas en mode d'écoute.

Le type du descripteur dépend de la plate-forme :

  • Sous Windows, la valeur renvoyée est un descripteur de socket Winsock 2.
  • Sous INTEGRITY, la valeur renvoyée est le descripteur de socket « QTcpServer » et le type est défini par socketDescriptor.
  • Sur tous les autres systèmes d’exploitation de type UNIX, le type est un descripteur de fichier représentant un socket en écoute.

Voir également listen().

QLocalServer::SocketOptions QLocalServer::socketOptions() const

Renvoie les options définies pour le socket.

Remarque : fonctionde lecture pour la propriété socketOptions.

Voir aussi setSocketOptions().

bool QLocalServer::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 dépassé le délai d’attente et que timedOut n’est pas nullptr, *timedOut sera défini sur true.

Il s'agit d'un appel de fonction bloquant. Son utilisation est déconseillée dans une application GUI monothread, car l'application entière cessera de répondre jusqu'à ce que la fonction renvoie une valeur. waitForNewConnection() est surtout utile lorsqu'aucune boucle d'événements n'est disponible.

L’alternative non bloquante consiste à s’abonner au signal ` newConnection()`.

Si msec est égal à -1, cette fonction n'expirera pas.

Voir également 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.