QLocalServer Class
La classe QLocalServer fournit un serveur local basé sur une socket. Plus d'informations...
| En-tête : | #include <QLocalServer> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
| Héritages : | QObject |
Types publics
| enum | SocketOption { NoOptions, UserAccessOption, GroupAccessOption, OtherAccessOption, WorldAccessOption, AbstractNamespaceOption } |
| flags | SocketOptions |
Propriétés
- socketOptions : SocketOptions
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 des connexions locales entrantes.
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 que connexion QLocalSocket. La fonction renvoie un pointeur vers un QLocalSocket qui peut être utilisé 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, le nom sur lequel le serveur écoute est disponible via serverName().
En appelant close(), QLocalServer cesse d'écouter les connexions entrantes.
Bien que QLocalServer soit conçu pour être utilisé avec une boucle d'événements, il est possible de l'utiliser sans boucle d'événements. Dans ce cas, vous devez utiliser waitForNewConnection(), qui bloque jusqu'à ce qu'une connexion soit disponible ou qu'un délai d'attente expire.
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 qui peuvent être utilisées pour créer la socket. Cela modifie les autorisations d'accès sur les plates-formes (Linux, Windows) qui prennent en charge les autorisations d'accès à la socket. La signification des options GroupAccess et OtherAccess peut varier légèrement en fonction de la plateforme. Sous Linux et Android, il est possible d'utiliser des sockets avec des adresses abstraites ; les autorisations d'accès aux sockets n'ont aucune signification pour de telles sockets.
| Constante | Valeur | Description |
|---|---|---|
QLocalServer::NoOptions | 0x0 | Aucune restriction d'accès n'a été définie. |
QLocalServer::UserAccessOption | 0x01 | L'accès est limité au même utilisateur que le processus qui a créé la socket. |
QLocalServer::GroupAccessOption | 0x2 | L'accès est limité au même groupe mais pas à l'utilisateur qui a créé la socket sous Linux. L'accès est limité au groupe principal du processus sous Windows |
QLocalServer::OtherAccessOption | 0x4 | L'accès est disponible pour tout le monde sauf pour l'utilisateur et le groupe qui ont créé la socket sous Linux. L'accès est disponible pour tout le monde sous Windows. |
QLocalServer::WorldAccessOption | 0x7 | Aucune restriction d'accès. |
QLocalServer::AbstractNamespaceOption | 0x8 | La socket d'écoute sera créée dans l'espace de noms abstrait. Cet indicateur est spécifique à Linux. Dans le cas d'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 sur les propriétés
[bindable] socketOptions : SocketOptions
Note : Cette propriété supporte les bindings QProperty.
Cette propriété contient les options de la socket qui contrôlent son fonctionnement.
Par exemple, la socket peut restreindre l'accès aux identifiants des utilisateurs qui peuvent se connecter à la socket.
Ces options doivent être définies avant que listen() ne soit appelé.
Dans certains cas, comme avec les sockets de domaine Unix sous Linux, l'accès à la socket est déterminé par les permissions du système de fichiers et est créé en fonction de l'umask. La définition des drapeaux d'accès permet d'outrepasser cette règle et de restreindre ou d'autoriser l'accès comme spécifié.
D'autres systèmes d'exploitation basés sur Unix, tels que macOS, ne respectent pas les autorisations de fichier pour les sockets de domaine Unix et ont par défaut WorldAccess.
Sous Windows, UserAccessOption est suffisant pour permettre à un processus non élevé de se connecter à un serveur local créé par un processus élevé exécuté par le même utilisateur. GroupAccessOption fait référence au groupe primaire du processus (voir TokenPrimaryGroup dans la documentation Windows). OtherAccessOption fait référence au groupe bien connu "Tout le monde".
Sur les plateformes Linux, il est possible de créer une 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 permission. Sur les autres plateformes, AbstractNamespaceOption est équivalent à WorldAccessOption.
Par défaut, aucun des drapeaux n'est activé, les autorisations d'accès sont celles de la plate-forme.
Fonctions d'accès :
| QLocalServer::SocketOptions | socketOptions() const |
| void | setSocketOptions(QLocalServer::SocketOptions options) |
Voir aussi listen().
Documentation des fonctions membres
[explicit] QLocalServer::QLocalServer(QObject *parent = nullptr)
Crée un nouveau serveur de socket local avec l'adresse parent.
Voir aussi listen().
[virtual noexcept] QLocalServer::~QLocalServer()
Détruit l'objet QLocalServer. Si le serveur est à l'écoute de connexions, il est automatiquement fermé.
Toutes les QLocalSockets clientes encore connectées doivent se déconnecter ou être réparties 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 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 newConnection() après l'ajout de la socket.
Cette fonction a été introduite dans Qt 6.8.
Voir aussi incomingConnection() et newConnection().
void QLocalServer::close()
Arrêter d'écouter les connexions entrantes. Les connexions existantes ne sont pas affectées, mais toute nouvelle connexion sera refusée.
Voir aussi isListening() et listen().
QString QLocalServer::errorString() const
Renvoie le message lisible par l'homme 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 aussi serverError().
QString QLocalServer::fullServerName() const
Renvoie le chemin complet sur lequel le serveur est à l'écoute.
Note : Ceci est spécifique à la plate-forme
Voir aussi listen() et serverName().
[virtual] bool QLocalServer::hasPendingConnections() const
Renvoie true si le serveur a une connexion en cours, sinon renvoie false.
Voir aussi 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 pour la connexion acceptée.
L'implémentation de base crée un QLocalSocket, définit le descripteur de socket et stocke ensuite le QLocalSocket 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.
Voir aussi newConnection(), nextPendingConnection() et QLocalSocket::setSocketDescriptor().
bool QLocalServer::isListening() const
Renvoie true si le serveur est à l'écoute des connexions entrantes, false sinon.
Voir aussi listen() et close().
bool QLocalServer::listen(const QString &name)
Indique au serveur d'écouter les connexions entrantes sur name. Si le serveur écoute déjà, listen() échouera. Retourne true en cas de succès, false dans le cas contraire.
name peut être un nom unique et QLocalServer déterminera le chemin d'accès correct spécifique à la plate-forme. serverName() renvoie le nom passé dans listen().
En général, on passe un nom comme "foo", mais sous Unix, il peut s'agir d'un chemin comme "/tmp/foo" et sous Windows, il peut s'agir d'un chemin de type pipe comme "\\.\pipe\foo "
Note : Sous Unix, si le serveur s'est planté sans se fermer, listen() échouera avec AddressInUseError. Pour créer un nouveau serveur, il faut d'abord supprimer le fichier. Sous Windows, deux serveurs locaux peuvent écouter le même tuyau en même temps, mais chaque connexion entrante ira à l'un d'entre eux.
Voir aussi 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 en train d'écouter. 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 supplémentaire spécifique à la plate-forme ne soit appelée. La socket est mise en mode non bloquant.
serverName(), fullServerName() peuvent renvoyer une chaîne de caractères avec un nom si cette option est prise en charge par la plate-forme ; sinon, elles renvoient une adresse vide QString. En particulier, les adresses des sockets dans l'espace de noms abstrait pris en charge par Linux ne produiront 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 à accepter.
Cette fonction a été introduite dans Qt 6.3.
Voir aussi setListenBacklogSize().
int QLocalServer::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 QLocalServer::newConnection()
Ce signal est émis chaque fois qu'une nouvelle connexion est disponible.
Voir aussi hasPendingConnections() et nextPendingConnection().
[virtual] QLocalSocket *QLocalServer::nextPendingConnection()
Renvoie la prochaine connexion en attente sous la forme d'un objet QLocalSocket connecté.
La socket est créée en tant qu'enfant du serveur, ce qui signifie qu'elle est automatiquement supprimée lorsque l'objet QLocalServer 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.
Voir aussi hasPendingConnections(), newConnection(), et incomingConnection().
[static] bool QLocalServer::removeServer(const QString &name)
Supprime toute instance de serveur qui pourrait faire échouer un appel à listen() et renvoie true en cas de succès ; sinon, renvoie false. Cette fonction est destinée à récupérer après un crash, 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 donné par name.
Attention : Veillez à ne pas supprimer les sockets des instances en cours d'exécution.
QAbstractSocket::SocketError QLocalServer::serverError() const
Renvoie le type d'erreur qui s'est produite en dernier ou NoError.
Voir aussi errorString().
QString QLocalServer::serverName() const
Renvoie le nom du serveur si le serveur est à l'écoute des connexions ; sinon, renvoie QString().
Voir aussi listen() et fullServerName().
[since 6.3] void QLocalServer::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 QLocalServer::setMaxPendingConnections(int numConnections)
Fixe le nombre maximal de connexions acceptées en attente à numConnections. QLocalServer n'acceptera pas plus de numConnections connexions entrantes avant que nextPendingConnection() ne soit appelé.
Remarque : même si QLocalServer cesse d'accepter de nouvelles connexions après avoir atteint son nombre maximal de connexions en attente, le système d'exploitation peut encore les garder en file d'attente, ce qui permet aux clients de signaler qu'ils sont connectés.
Voir aussi maxPendingConnections() et hasPendingConnections().
qintptr QLocalServer::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.
Le type de descripteur dépend de la plate-forme :
- Sous Windows, la valeur renvoyée est un Winsock 2 Socket Handle.
- Sur 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 une socket à l'écoute.
Voir aussi listen().
QLocalServer::SocketOptions QLocalServer::socketOptions() const
Renvoie les options de socket définies sur le socket.
Note : Fonction Getter 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 é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.