QLocalSocket Class
La classe QLocalSocket fournit un socket local. En savoir plus...
| En-tête : | #include <QLocalSocket> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
| Hérite de : | QIODevice |
Types publics
| enum | LocalSocketError { ConnectionRefusedError, PeerClosedError, ServerNotFoundError, SocketAccessError, SocketResourceError, …, UnknownSocketError } |
| enum | LocalSocketState { UnconnectedState, ConnectingState, ConnectedState, ClosingState } |
(since 6.2) enum | SocketOption { NoOptions, AbstractNamespaceOption } |
| flags | SocketOptions |
Propriétés
(since 6.2)socketOptions : SocketOptions
Fonctions publiques
| QLocalSocket(QObject *parent = nullptr) | |
| virtual | ~QLocalSocket() |
| void | abort() |
| QBindable<QLocalSocket::SocketOptions> | bindableSocketOptions() |
| void | connectToServer(QIODeviceBase::OpenMode openMode = ReadWrite) |
| void | connectToServer(const QString &name, QIODeviceBase::OpenMode openMode = ReadWrite) |
| void | disconnectFromServer() |
| QLocalSocket::LocalSocketError | error() const |
| bool | flush() |
| QString | fullServerName() const |
| bool | isValid() const |
| qint64 | readBufferSize() const |
| QString | serverName() const |
| void | setReadBufferSize(qint64 size) |
| void | setServerName(const QString &name) |
| bool | setSocketDescriptor(qintptr socketDescriptor, QLocalSocket::LocalSocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite) |
| void | setSocketOptions(QLocalSocket::SocketOptions option) |
| qintptr | socketDescriptor() const |
| QLocalSocket::SocketOptions | socketOptions() const |
| QLocalSocket::LocalSocketState | state() const |
| bool | waitForConnected(int msecs = 30000) |
| bool | waitForDisconnected(int msecs = 30000) |
Fonctions publiques réimplémentées
| virtual qint64 | bytesAvailable() const override |
| virtual qint64 | bytesToWrite() const override |
| virtual bool | canReadLine() const override |
| virtual void | close() override |
| virtual bool | isSequential() const override |
| virtual bool | open(QIODeviceBase::OpenMode openMode = ReadWrite) override |
| virtual bool | waitForBytesWritten(int msecs = 30000) override |
| virtual bool | waitForReadyRead(int msecs = 30000) override |
Signaux
| void | connected() |
| void | disconnected() |
| void | errorOccurred(QLocalSocket::LocalSocketError socketError) |
| void | stateChanged(QLocalSocket::LocalSocketState socketState) |
Fonctions protégées réimplémentées
| virtual qint64 | readData(char *data, qint64 c) override |
| virtual qint64 | readLineData(char *data, qint64 maxSize) override |
| virtual qint64 | skipData(qint64 maxSize) override |
| virtual qint64 | writeData(const char *data, qint64 c) override |
Description détaillée
Sous Windows, il s'agit d'un tube nommé et sous Unix, d'un socket de domaine local.
En cas d’erreur, la fonction ` error()` 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é.
Bien que QLocalSocket soit conçu pour être utilisé avec une boucle d’événements, il est possible de s’en servir sans celle-ci. Dans ce cas, vous devez utiliser les fonctions waitForConnected(), waitForReadyRead(), waitForBytesWritten() et waitForDisconnected() qui bloquent l’exécution jusqu’à ce que l’opération soit terminée ou que le délai d’attente expire.
Voir également QLocalServer.
Documentation sur les types de membres
enum QLocalSocket::LocalSocketError
L'énumération `LocalServerError` représente les erreurs susceptibles de se produire. L'erreur la plus récente peut être récupérée via l'appel à la méthode ` QLocalSocket::error()`.
| Constante | Valeur | Description |
|---|---|---|
QLocalSocket::ConnectionRefusedError | QAbstractSocket::ConnectionRefusedError | La connexion a été refusée par le pair (ou a expiré). |
QLocalSocket::PeerClosedError | QAbstractSocket::RemoteHostClosedError | Le socket distant a fermé la connexion. Notez que le socket client (c'est-à-dire ce socket) sera fermé une fois que la notification de fermeture distante aura été envoyée. |
QLocalSocket::ServerNotFoundError | QAbstractSocket::HostNotFoundError | Le nom du socket local est introuvable. |
QLocalSocket::SocketAccessError | QAbstractSocket::SocketAccessError | L'opération sur le socket a échoué car l'application ne disposait pas des privilèges requis. |
QLocalSocket::SocketResourceError | QAbstractSocket::SocketResourceError | Le système local a épuisé ses ressources (par exemple, trop de sockets). |
QLocalSocket::SocketTimeoutError | QAbstractSocket::SocketTimeoutError | L'opération sur le socket a expiré. |
QLocalSocket::DatagramTooLargeError | QAbstractSocket::DatagramTooLargeError | Le datagramme dépassait la limite imposée par le système d'exploitation (qui peut être aussi faible que 8 192 octets). |
QLocalSocket::ConnectionError | QAbstractSocket::NetworkError | Une erreur s'est produite lors de la connexion. |
QLocalSocket::UnsupportedSocketOperationError | QAbstractSocket::UnsupportedSocketOperationError | L'opération de socket demandée n'est pas prise en charge par le système d'exploitation local. |
QLocalSocket::OperationError | QAbstractSocket::OperationError | Une opération a été tentée alors que le socket se trouvait dans un état ne le permettant pas. |
QLocalSocket::UnknownSocketError | QAbstractSocket::UnknownSocketError | Une erreur non identifiée s’est produite. |
enum QLocalSocket::LocalSocketState
Cette énumération décrit les différents états dans lesquels un socket peut se trouver.
| Constante | Valeur | Description |
|---|---|---|
QLocalSocket::UnconnectedState | QAbstractSocket::UnconnectedState | Le socket n'est pas connecté. |
QLocalSocket::ConnectingState | QAbstractSocket::ConnectingState | La socket a commencé à établir une connexion. |
QLocalSocket::ConnectedState | QAbstractSocket::ConnectedState | Une connexion est établie. |
QLocalSocket::ClosingState | QAbstractSocket::ClosingState | Le socket est sur le point de se fermer (des données peuvent encore être en attente d’écriture). |
Voir aussi QLocalSocket::state().
[since 6.2] enum QLocalSocket::SocketOption
flags QLocalSocket::SocketOptions
Cette énumération décrit les options possibles pouvant être utilisées pour se connecter à un serveur. Actuellement, sous Linux et Android, elle sert à spécifier la connexion à un serveur écoutant sur un socket lié à une adresse abstraite.
| Constante | Valeur | Description |
|---|---|---|
QLocalSocket::NoOptions | 0x00 | Aucune option n'a été définie. |
QLocalSocket::AbstractNamespaceOption | 0x01 | Le socket tentera de se connecter à une adresse abstraite. Cet indicateur est spécifique à Linux et Android. Il est ignoré sur les autres plateformes. |
Cette énumération a été introduite dans Qt 6.2.
Le type SocketOptions est un typedef pour QFlags<SocketOption>. Il stocke une combinaison OU de valeurs SocketOption.
Voir aussi socketOptions.
Documentation des propriétés
[bindable, since 6.2] socketOptions : SocketOptions
Remarque : cette propriété prend en charge les liaisons de type « QProperty ».
Cette propriété contient les options du socket.
Les options doivent être définies lorsque la socket est dans l'état « UnconnectedState ».
Cette énumération a été introduite dans Qt 6.2.
Fonctions d'accès :
| QLocalSocket::SocketOptions | socketOptions() const |
| void | setSocketOptions(QLocalSocket::SocketOptions option) |
Voir aussi connectToServer().
Documentation des fonctions membres
QLocalSocket::QLocalSocket(QObject *parent = nullptr)
Crée un nouveau socket local. L'argument « parent » est transmis au constructeur de ` QObject`.
[virtual noexcept] QLocalSocket::~QLocalSocket()
Supprime le socket et ferme la connexion si nécessaire.
void QLocalSocket::abort()
Interrompt la connexion en cours et réinitialise le socket. Contrairement à la fonction ` disconnectFromServer()`, cette fonction ferme immédiatement le socket, effaçant ainsi toutes les données en attente dans le tampon d'écriture.
Voir également disconnectFromServer() et close().
[override virtual] qint64 QLocalSocket::bytesAvailable() const
Réimplémente : QIODevice::bytesAvailable() const.
[override virtual] qint64 QLocalSocket::bytesToWrite() const
Réimplémente : QIODevice::bytesToWrite() const.
[override virtual] bool QLocalSocket::canReadLine() const
Réimplémente : QIODevice::canReadLine() const.
[override virtual] void QLocalSocket::close()
Réimplémente : QIODevice::close().
Ferme le périphérique d'E/S associé au socket et appelle la fonction disconnectFromServer() pour fermer la connexion du socket.
Voir QIODevice::close() pour une description des actions qui se produisent lorsqu’un périphérique d’E/S est fermé.
Voir également abort().
void QLocalSocket::connectToServer(QIODeviceBase::OpenMode openMode = ReadWrite)
Tente d'établir une connexion à serverName(). La fonction setServerName() doit être appelée avant d'ouvrir la connexion. Vous pouvez également utiliser connectToServer(const QString &name, OpenMode openMode) ;
Le socket est ouvert sur l'adresse openMode indiquée et entre d'abord dans l'état ConnectingState. Si une connexion est établie, QLocalSocket passe à l'état ConnectedState et émet l'événement connected().
Après l'appel de cette fonction, le socket peut émettre errorOccurred() pour signaler qu'une erreur s'est produite.
Voir également state(), serverName() et waitForConnected().
void QLocalSocket::connectToServer(const QString &name, QIODeviceBase::OpenMode openMode = ReadWrite)
Définit l'name du serveur et tente d'établir une connexion avec celui-ci.
Le socket est ouvert sur l'openMode indiquée et accède d'abord à ConnectingState. Si une connexion est établie, QLocalSocket accède à ConnectedState et émet connected().
Après l'appel de cette fonction, le socket peut émettre errorOccurred() pour signaler qu'une erreur s'est produite.
Il s'agit d'une fonction surchargée.
Voir également state(), serverName() et waitForConnected().
[signal] void QLocalSocket::connected()
Ce signal est émis une fois que la fonction connectToServer() a été appelée et qu'une connexion a été établie avec succès.
Voir également connectToServer() et disconnected().
void QLocalSocket::disconnectFromServer()
Tente de fermer le socket. S'il reste des données en attente d'écriture, ` QLocalSocket ` passe en état « ClosingState » et attend que toutes les données aient été écrites. À terme, il passe en état « UnconnectedState » et émet le signal ` disconnected()`.
Voir également connectToServer().
[signal] void QLocalSocket::disconnected()
Ce signal est émis lorsque la connexion a été interrompue.
Voir également connectToServer(), disconnectFromServer(), abort() et connected().
QLocalSocket::LocalSocketError QLocalSocket::error() const
Renvoie le type de l'erreur qui s'est produite en dernier.
Voir également state() et errorString().
[signal] void QLocalSocket::errorOccurred(QLocalSocket::LocalSocketError socketError)
Ce signal est émis lorsqu'une erreur s'est produite. Le paramètre « socketError » décrit le type d'erreur survenue.
Voir également error() et errorString().
bool QLocalSocket::flush()
Cette fonction écrit autant de données que possible depuis le tampon d'écriture interne vers le socket, sans blocage. Si des données ont été écrites, cette fonction renvoie ` true` ; sinon, elle renvoie `false`.
Appelez cette fonction si vous avez besoin que QLocalSocket commence immédiatement à envoyer les données mises en mémoire tampon. Le nombre d’octets écrits avec succès dépend du système d’exploitation. Dans la plupart des cas, vous n’avez pas besoin d’appeler cette fonction, car QLocalSocket commencera automatiquement à envoyer les données dès que le contrôle reviendra à la boucle d’événements. En l’absence de boucle d’événements, appelez plutôt waitForBytesWritten().
Voir également write() et waitForBytesWritten().
QString QLocalSocket::fullServerName() const
Renvoie le chemin d'accès au serveur auquel le socket est connecté.
Remarque : la valeur renvoyée par cette fonction dépend de la plate-forme.
Voir aussi connectToServer() et serverName().
[override virtual] bool QLocalSocket::isSequential() const
Réimplémente : QIODevice::isSequential() const.
bool QLocalSocket::isValid() const
Renvoie « true » si le socket est valide et prêt à être utilisé ; sinon, renvoie « false ».
Remarque : l'état du socket doit être « ConnectedState » avant que la lecture et l'écriture puissent avoir lieu.
Voir également state() et connectToServer().
[override virtual] bool QLocalSocket::open(QIODeviceBase::OpenMode openMode = ReadWrite)
Réimplémente : QIODevice::open(mode QIODeviceBase::OpenMode).
Équivalent à connectToServer(mode OpenMode). La socket est ouverte dans l’ openMode e spécifiée vers le serveur défini par setServerName().
Notez que, contrairement à la plupart des autres sous-classes de QIODevice, la fonction open() n’ouvre pas nécessairement le périphérique directement. La fonction renvoie false si la socket était déjà connectée ou si le serveur auquel se connecter n’était pas défini, et true dans tous les autres cas. Les signaux connected() ou errorOccurred() seront émis une fois que le périphérique sera effectivement ouvert (ou que la connexion aura échoué).
Voir connectToServer() pour plus de détails.
qint64 QLocalSocket::readBufferSize() const
Renvoie la taille du tampon de lecture interne. Cela limite la quantité de données que le client peut recevoir avant que vous n'appeliez read() ou readAll(). Une taille de tampon de lecture égale à 0 (valeur par défaut) signifie que le tampon n'a pas de limite de taille, ce qui garantit qu'aucune donnée n'est perdue.
Voir également setReadBufferSize() et read().
[override virtual protected] qint64 QLocalSocket::readData(char *data, qint64 c)
Réimplémentation de : QIODevice::readData(char *data, qint64 maxSize).
[override virtual protected] qint64 QLocalSocket::readLineData(char *data, qint64 maxSize)
Réimplémentation de : QIODevice::readLineData(char *data, qint64 maxSize).
QString QLocalSocket::serverName() const
Renvoie le nom du pair tel que spécifié par la fonction setServerName(), ou un objet QString vide si la fonction setServerName() n'a pas été appelée ou si la fonction connectToServer() a échoué.
Voir également setServerName(), connectToServer() et fullServerName().
void QLocalSocket::setReadBufferSize(qint64 size)
Définit la taille du tampon de lecture interne de la fonction ` QLocalSocket` à size octets.
Si la taille du tampon est limitée à une certaine valeur, QLocalSocket ne mettra pas en tampon plus de données que cette taille. À titre exceptionnel, une taille de tampon égale à 0 signifie que le tampon de lecture est illimité et que toutes les données entrantes sont mises en tampon. Il s'agit de la valeur par défaut.
Cette option est utile si vous ne lisez les données qu’à certains moments (par exemple, dans une application de streaming en temps réel) ou si vous souhaitez protéger votre socket contre la réception d’un volume trop important de données, ce qui pourrait finir par entraîner un épuisement de la mémoire de votre application.
Voir également readBufferSize() et read().
void QLocalSocket::setServerName(const QString &name)
Définit l’ name e du pair auquel se connecter. Sous Windows, « name » correspond au nom d’un canal nommé ; sous Unix, « name » correspond au nom d’un socket de domaine local.
Cette fonction doit être appelée lorsque le socket n'est pas connecté.
Voir également serverName().
bool QLocalSocket::setSocketDescriptor(qintptr socketDescriptor, QLocalSocket::LocalSocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite)
Initialise QLocalSocket avec le descripteur de socket natif socketDescriptor. Renvoie true si socketDescriptor est accepté comme descripteur de socket valide ; sinon, renvoie false. La socket est ouverte dans le mode spécifié par openMode et passe à l'état de socket spécifié par socketState.
Remarque : il n’est pas possible d’initialiser deux sockets locales avec le même descripteur de socket natif.
Voir également socketDescriptor(), state() et openMode().
[override virtual protected] qint64 QLocalSocket::skipData(qint64 maxSize)
Réimplémentation de : QIODevice::skipData(qint64 maxSize).
qintptr QLocalSocket::socketDescriptor() const
Renvoie le descripteur de socket natif de l'objet ` QLocalSocket ` s'il est disponible ; sinon, renvoie -1.
Le descripteur de socket n'est pas disponible lorsque QLocalSocket est en mode « UnconnectedState ». 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 d’ QTcpSocket 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.
Voir également setSocketDescriptor().
QLocalSocket::LocalSocketState QLocalSocket::state() const
Renvoie l'état du socket.
Voir aussi error().
[signal] void QLocalSocket::stateChanged(QLocalSocket::LocalSocketState socketState)
Ce signal est émis chaque fois que l'état de ` QLocalSocket` change. Le paramètre ` socketState ` correspond au nouvel état.
Voir également state().
[override virtual] bool QLocalSocket::waitForBytesWritten(int msecs = 30000)
Réimplémentation de : QIODevice::waitForBytesWritten(int msecs).
bool QLocalSocket::waitForConnected(int msecs = 30000)
Attend que le socket soit connecté, pendant au maximum msecs millisecondes. Si la connexion a été établie, cette fonction renvoie true; sinon, elle renvoie false. Si elle renvoie false, vous pouvez appeler error() pour déterminer la cause de l'erreur.
L'exemple suivant attend jusqu'à une seconde que la connexion soit établie :
socket->connectToServer("market");
if (socket->waitForConnected(1000))
qDebug("Connected!");Si la valeur de ` msecs ` est égale à -1, cette fonction n'expirera pas.
Voir également connectToServer() et connected().
bool QLocalSocket::waitForDisconnected(int msecs = 30000)
Attend que la connexion soit interrompue, pendant un délai maximal de msecs millisecondes. Si la connexion a été interrompue avec succès, cette fonction renvoie true; sinon, elle renvoie false (si l’opération a dépassé le délai d’attente, si une erreur s’est produite ou si cette QLocalSocket est déjà déconnectée). Dans le cas où elle renvoie false, vous pouvez appeler error() pour déterminer la cause de l’erreur.
L'exemple suivant attend jusqu'à une seconde que la connexion soit fermée :
socket->disconnectFromServer();
if (socket->state()== QLocalSocket::UnconnectedState
|| socket->waitForDisconnected(1000)) {
qDebug("Disconnected!");
}Si msecs vaut -1, cette fonction n'expire pas.
Voir également disconnectFromServer() et close().
[override virtual] bool QLocalSocket::waitForReadyRead(int msecs = 30000)
Réimplémente : QIODevice::waitForReadyRead(int msecs).
Cette fonction reste bloquée jusqu’à ce que des données soient disponibles en lecture et que le signal readyRead() ait été émis. La fonction expire après msecs millisecondes ; le délai d’expiration par défaut est de 30 000 millisecondes.
La fonction renvoie true si des données sont disponibles en lecture ; sinon, elle renvoie false (en cas d’erreur ou d’expiration du délai d’attente).
Voir également waitForBytesWritten().
[override virtual protected] qint64 QLocalSocket::writeData(const char *data, qint64 c)
Réimplémente : QIODevice::writeData(const char *data, qint64 maxSize).
© 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.