QLocalSocket Class
La classe QLocalSocket fournit une socket locale. Plus d'informations...
| En-tête : | #include <QLocalSocket> |
| CMake : | find_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake : | QT += network |
| Héritages : | 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 tuyau nommé et sous Unix, d'un socket de domaine local.
En cas d'erreur, error() renvoie le type d'erreur et errorString() peut être appelé pour obtenir une description lisible par l'homme 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 l'utiliser sans. Dans ce cas, vous devez utiliser waitForConnected(), waitForReadyRead(), waitForBytesWritten() et waitForDisconnected() qui se bloquent 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 qui peuvent se produire. L'erreur la plus récente peut être récupérée par un appel à QLocalSocket::error().
| Constante | Valeur | Description de l'erreur |
|---|---|---|
QLocalSocket::ConnectionRefusedError | QAbstractSocket::ConnectionRefusedError | La connexion a été refusée par l'homologue (ou s'est interrompue). |
QLocalSocket::PeerClosedError | QAbstractSocket::RemoteHostClosedError | La socket distante a fermé la connexion. Notez que la socket du client (c'est-à-dire cette socket) sera fermée après l'envoi de la notification de fermeture à distance. |
QLocalSocket::ServerNotFoundError | QAbstractSocket::HostNotFoundError | Le nom de la socket locale n'a pas été trouvé. |
QLocalSocket::SocketAccessError | QAbstractSocket::SocketAccessError | L'opération de socket a échoué parce que l'application n'avait pas les privilèges requis. |
QLocalSocket::SocketResourceError | QAbstractSocket::SocketResourceError | Le système local a manqué de ressources (par exemple, trop de sockets). |
QLocalSocket::SocketTimeoutError | QAbstractSocket::SocketTimeoutError | L'opération de socket a dépassé le temps imparti. |
QLocalSocket::DatagramTooLargeError | QAbstractSocket::DatagramTooLargeError | Le datagramme était plus grand que la limite du système d'exploitation (qui peut être aussi bas que 8192 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 la socket était dans un état qui ne la permettait 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 une socket peut se trouver.
| Constante | Valeur | Description de l'état |
|---|---|---|
QLocalSocket::UnconnectedState | QAbstractSocket::UnconnectedState | La socket n'est pas connectée. |
QLocalSocket::ConnectingState | QAbstractSocket::ConnectingState | La socket a commencé à établir une connexion. |
QLocalSocket::ConnectedState | QAbstractSocket::ConnectedState | Une connexion est établie. |
QLocalSocket::ClosingState | QAbstractSocket::ClosingState | La socket est sur le point de se fermer (des données peuvent encore attendre d'être écrites). |
Voir aussi QLocalSocket::state().
[since 6.2] enum QLocalSocket::SocketOption
flags QLocalSocket::SocketOptions
Cette énumération décrit les options possibles qui peuvent être utilisées pour se connecter à un serveur. Actuellement, sous Linux et Android, elle est utilisée pour spécifier la connexion à un serveur écoutant une socket liée à une adresse abstraite.
| Constante | Valeur | Description |
|---|---|---|
QLocalSocket::NoOptions | 0x00 | Aucune option n'a été définie. |
QLocalSocket::AbstractNamespaceOption | 0x01 | La socket essaiera de se connecter à une adresse abstraite. Ce drapeau est spécifique à Linux et Android. Sur les autres plateformes, il est ignoré. |
Cette liste a été introduite dans Qt 6.2.
Le type SocketOptions est un typedef pour QFlags<SocketOption>. Il stocke une combinaison OR de valeurs SocketOption.
Voir également socketOptions.
Documentation sur les propriétés
[bindable, since 6.2] socketOptions : SocketOptions
Note : Cette propriété supporte les liens QProperty.
Cette propriété contient les options du socket.
Les options doivent être définies lorsque la socket est dans l'état UnconnectedState.
Cette propriété 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 une nouvelle socket locale. L'argument parent est transmis au constructeur de QObject.
[virtual noexcept] QLocalSocket::~QLocalSocket()
Détruit le socket, en fermant la connexion si nécessaire.
void QLocalSocket::abort()
Abandonne la connexion en cours et réinitialise la socket. Contrairement à disconnectFromServer(), cette fonction ferme immédiatement la socket, en effaçant toutes les données en attente dans le tampon d'écriture.
Voir aussi 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 pour la socket et appelle disconnectFromServer() pour fermer la connexion de la socket.
Voir QIODevice::close() pour une description des actions qui se produisent lorsqu'un périphérique d'E/S est fermé.
Voir aussi abort().
void QLocalSocket::connectToServer(QIODeviceBase::OpenMode openMode = ReadWrite)
Tente d'établir une connexion avec serverName(). setServerName() doit être appelé avant d'ouvrir la connexion. Vous pouvez également utiliser connectToServer(const QString &name, OpenMode openMode) ;
Le socket est ouvert dans le openMode donné et entre d'abord dans le ConnectingState. Si une connexion est établie, QLocalSocket entre dans ConnectedState et émet connected().
Après avoir appelé cette fonction, la 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 le serveur name et tente d'établir une connexion avec lui.
La socket est ouverte dans l'adresse openMode et entre d'abord dans ConnectingState. Si une connexion est établie, QLocalSocket entre dans ConnectedState et émet connected().
Après avoir appelé cette fonction, le socket peut émettre errorOccurred() pour signaler qu'une erreur s'est produite.
Il s'agit d'une fonction surchargée.
Voir aussi state(), serverName() et waitForConnected().
[signal] void QLocalSocket::connected()
Ce signal est émis après que connectToServer() a été appelé et qu'une connexion a été établie avec succès.
Voir aussi connectToServer() et disconnected().
void QLocalSocket::disconnectFromServer()
Tente de fermer la socket. S'il y a des données en attente d'écriture, QLocalSocket entrera dans ClosingState et attendra jusqu'à ce que toutes les données aient été écrites. Finalement, il entrera dans UnconnectedState et émettra le signal disconnected().
Voir aussi connectToServer().
[signal] void QLocalSocket::disconnected()
Ce signal est émis lorsque la socket a été déconnectée.
Voir aussi connectToServer(), disconnectFromServer(), abort(), et connected().
QLocalSocket::LocalSocketError QLocalSocket::error() const
Renvoie le type d'erreur qui s'est produite en dernier.
Voir aussi 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 qui s'est produite.
QLocalSocket::LocalSocketError n'est pas un métatype enregistré, donc pour les connexions en file d'attente, vous devrez l'enregistrer avec Q_DECLARE_METATYPE() et qRegisterMetaType().
Voir aussi error(), errorString(), et Créer des types Qt personnalisés.
bool QLocalSocket::flush()
Cette fonction écrit autant de données que possible depuis le tampon d'écriture interne vers la socket, sans bloquer. 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 à envoyer des données tamponnées immédiatement. Le nombre d'octets écrits avec succès dépend du système d'exploitation. Dans la plupart des cas, il n'est pas nécessaire d'appeler cette fonction, car QLocalSocket commencera à envoyer des données automatiquement 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 du serveur auquel la socket est connectée.
Remarque : la valeur de retour de cette fonction est spécifique à 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 la socket est valide et prête à être utilisée, sinon renvoie false.
Note : L'état de la socket doit être ConnectedState avant que la lecture et l'écriture puissent avoir lieu.
Voir aussi 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'adresse openMode donnée au serveur défini par setServerName().
Notez que contrairement à la plupart des autres sous-classes de QIODevice, open() ne peut pas ouvrir le périphérique directement. La fonction renvoie false si la socket est déjà connectée ou si le serveur auquel se connecter n'a pas été défini et true dans tous les autres cas. Les signaux connected() ou errorOccurred() seront émis une fois que le périphérique est effectivement ouvert (ou que la connexion a é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 de 0 (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émente : QIODevice::readData(char *data, qint64 maxSize).
[override virtual protected] qint64 QLocalSocket::readLineData(char *data, qint64 maxSize)
Réimplémente : QIODevice::readLineData(char *data, qint64 maxSize).
QString QLocalSocket::serverName() const
Renvoie le nom du pair tel que spécifié par setServerName(), ou un QString vide si setServerName() n'a pas été appelé ou si connectToServer() a échoué.
Voir aussi setServerName(), connectToServer(), et fullServerName().
void QLocalSocket::setReadBufferSize(qint64 size)
Fixe la taille du tampon de lecture interne de QLocalSocket à size octets.
Si la taille du tampon est limitée à une certaine taille, QLocalSocket ne mettra pas en mémoire tampon plus que cette taille de données. Exceptionnellement, une taille de tampon de 0 signifie que le tampon de lecture est illimité et que toutes les données entrantes sont mises en mémoire 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 voulez protéger votre socket contre la réception d'une trop grande quantité de données, ce qui pourrait éventuellement entraîner une saturation de la mémoire de votre application.
Voir aussi readBufferSize() et read().
void QLocalSocket::setServerName(const QString &name)
Définir l'adresse name de l'homologue auquel se connecter. Sous Windows, le nom est le nom d'un tuyau nommé ; sous Unix, le nom est le nom d'un socket de domaine local.
Cette fonction doit être appelée lorsque la socket n'est pas connectée.
Voir aussi 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 entre dans l'état de la 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 aussi socketDescriptor(), state(), et openMode().
[override virtual protected] qint64 QLocalSocket::skipData(qint64 maxSize)
Réimplémente : 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 dans UnconnectedState. 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 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 une socket.
Voir aussi setSocketDescriptor().
QLocalSocket::LocalSocketState QLocalSocket::state() const
Renvoie l'état de la socket.
Voir aussi error().
[signal] void QLocalSocket::stateChanged(QLocalSocket::LocalSocketState socketState)
Ce signal est émis lorsque l'état de QLocalSocket change. Le paramètre socketState est le nouvel état.
QLocalSocket::SocketState n'est pas un métatype enregistré, donc pour les connexions en file d'attente, vous devrez l'enregistrer avec Q_DECLARE_METATYPE() et qRegisterMetaType().
Voir aussi state() et Créer des types Qt personnalisés.
[override virtual] bool QLocalSocket::waitForBytesWritten(int msecs = 30000)
Réimplémente : QIODevice::waitForBytesWritten(int msecs).
bool QLocalSocket::waitForConnected(int msecs = 30000)
Attend que le socket soit connecté, jusqu'à msecs millisecondes. Si la connexion a été établie, cette fonction renvoie true; sinon, elle renvoie false. 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 l'établissement d'une connexion :
socket->connectToServer("market") ;if (socket->waitForConnected(1000)) qDebug("Connected!");
Si msecs vaut -1, cette fonction n'est pas interrompue.
Voir aussi connectToServer() et connected().
bool QLocalSocket::waitForDisconnected(int msecs = 30000)
Attend que la socket soit déconnectée, jusqu'à msecs millisecondes. Si la connexion a été déconnectée avec succès, cette fonction renvoie true; sinon, elle renvoie false (si l'opération a pris du retard, 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 la fermeture d'une connexion :
socket->disconnectFromServer() ;if (socket->state() == QLocalSocket::UnconnectedState || socket->waitForDisconnected(1000)) { qDebug("Disconnected!"); }
Si msecs vaut -1, cette fonction n'est pas interrompue.
Voir aussi disconnectFromServer() et close().
[override virtual] bool QLocalSocket::waitForReadyRead(int msecs = 30000)
Réimplémente : QIODevice::waitForReadyRead(int msecs).
Cette fonction se bloque jusqu'à ce que les données soient disponibles pour la lecture et que le signal readyRead() ait été émis. La fonction s'arrête au bout de msecs millisecondes ; le délai par défaut est de 30000 millisecondes.
La fonction renvoie true si les données sont disponibles pour la lecture ; sinon, elle renvoie false (si une erreur s'est produite ou si l'opération a expiré).
Voir aussi 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.