Sur cette page

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

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()`.

ConstanteValeurDescription
QLocalSocket::ConnectionRefusedErrorQAbstractSocket::ConnectionRefusedErrorLa connexion a été refusée par le pair (ou a expiré).
QLocalSocket::PeerClosedErrorQAbstractSocket::RemoteHostClosedErrorLe 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::ServerNotFoundErrorQAbstractSocket::HostNotFoundErrorLe nom du socket local est introuvable.
QLocalSocket::SocketAccessErrorQAbstractSocket::SocketAccessErrorL'opération sur le socket a échoué car l'application ne disposait pas des privilèges requis.
QLocalSocket::SocketResourceErrorQAbstractSocket::SocketResourceErrorLe système local a épuisé ses ressources (par exemple, trop de sockets).
QLocalSocket::SocketTimeoutErrorQAbstractSocket::SocketTimeoutErrorL'opération sur le socket a expiré.
QLocalSocket::DatagramTooLargeErrorQAbstractSocket::DatagramTooLargeErrorLe datagramme dépassait la limite imposée par le système d'exploitation (qui peut être aussi faible que 8 192 octets).
QLocalSocket::ConnectionErrorQAbstractSocket::NetworkErrorUne erreur s'est produite lors de la connexion.
QLocalSocket::UnsupportedSocketOperationErrorQAbstractSocket::UnsupportedSocketOperationErrorL'opération de socket demandée n'est pas prise en charge par le système d'exploitation local.
QLocalSocket::OperationErrorQAbstractSocket::OperationErrorUne opération a été tentée alors que le socket se trouvait dans un état ne le permettant pas.
QLocalSocket::UnknownSocketErrorQAbstractSocket::UnknownSocketErrorUne 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.

ConstanteValeurDescription
QLocalSocket::UnconnectedStateQAbstractSocket::UnconnectedStateLe socket n'est pas connecté.
QLocalSocket::ConnectingStateQAbstractSocket::ConnectingStateLa socket a commencé à établir une connexion.
QLocalSocket::ConnectedStateQAbstractSocket::ConnectedStateUne connexion est établie.
QLocalSocket::ClosingStateQAbstractSocket::ClosingStateLe 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.

ConstanteValeurDescription
QLocalSocket::NoOptions0x00Aucune option n'a été définie.
QLocalSocket::AbstractNamespaceOption0x01Le 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.