En esta página

QLocalSocket Class

La clase QLocalSocket proporciona un socket local. Más...

Cabecera: #include <QLocalSocket>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
Hereda: QIODevice

Tipos públicos

enum LocalSocketError { ConnectionRefusedError, PeerClosedError, ServerNotFoundError, SocketAccessError, SocketResourceError, …, UnknownSocketError }
enum LocalSocketState { UnconnectedState, ConnectingState, ConnectedState, ClosingState }
(since 6.2) enum SocketOption { NoOptions, AbstractNamespaceOption }
flags SocketOptions

Propiedades

Funciones públicas

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)

Funciones públicas reimplementadas

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

Señales

void connected()
void disconnected()
void errorOccurred(QLocalSocket::LocalSocketError socketError)
void stateChanged(QLocalSocket::LocalSocketState socketState)

Funciones protegidas reimplementadas

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

Descripción detallada

En Windows es una tubería con nombre y en Unix es un socket de dominio local.

Si se produce un error, error() devuelve el tipo de error, y errorString() puede ser llamado para obtener una descripción legible por humanos de lo sucedido.

Aunque QLocalSocket está diseñado para usarse con un bucle de eventos, es posible usarlo sin uno. En ese caso, debes usar waitForConnected(), waitForReadyRead(), waitForBytesWritten(), y waitForDisconnected() que bloquea hasta que la operación se completa o expira el tiempo de espera.

Véase también QLocalServer.

Documentación de tipos de miembros

enum QLocalSocket::LocalSocketError

La enumeración LocalServerError representa los errores que pueden producirse. El error más reciente puede recuperarse mediante una llamada a QLocalSocket::error().

ConstanteValorDescripción
QLocalSocket::ConnectionRefusedErrorQAbstractSocket::ConnectionRefusedErrorLa conexión fue rechazada por el peer (o expiró).
QLocalSocket::PeerClosedErrorQAbstractSocket::RemoteHostClosedErrorEl socket remoto cerró la conexión. Tenga en cuenta que el socket del cliente (es decir, este socket) se cerrará después de que se haya enviado la notificación de cierre remoto.
QLocalSocket::ServerNotFoundErrorQAbstractSocket::HostNotFoundErrorNo se ha encontrado el nombre del socket local.
QLocalSocket::SocketAccessErrorQAbstractSocket::SocketAccessErrorLa operación de socket falló porque la aplicación carecía de los privilegios necesarios.
QLocalSocket::SocketResourceErrorQAbstractSocket::SocketResourceErrorEl sistema local se ha quedado sin recursos (por ejemplo, demasiados sockets).
QLocalSocket::SocketTimeoutErrorQAbstractSocket::SocketTimeoutErrorEl tiempo de espera de la operación de socket ha expirado.
QLocalSocket::DatagramTooLargeErrorQAbstractSocket::DatagramTooLargeErrorEl datagrama era mayor que el límite del sistema operativo (que puede ser tan bajo como 8192 bytes).
QLocalSocket::ConnectionErrorQAbstractSocket::NetworkErrorSe ha producido un error en la conexión.
QLocalSocket::UnsupportedSocketOperationErrorQAbstractSocket::UnsupportedSocketOperationErrorLa operación de socket solicitada no está soportada por el sistema operativo local.
QLocalSocket::OperationErrorQAbstractSocket::OperationErrorSe intentó realizar una operación mientras el socket estaba en un estado que no lo permitía.
QLocalSocket::UnknownSocketErrorQAbstractSocket::UnknownSocketErrorSe ha producido un error no identificado.

enum QLocalSocket::LocalSocketState

Este enum describe los diferentes estados en los que puede estar un socket.

ConstanteValorDescripción
QLocalSocket::UnconnectedStateQAbstractSocket::UnconnectedStateEl socket no está conectado.
QLocalSocket::ConnectingStateQAbstractSocket::ConnectingStateEl socket ha comenzado a establecer una conexión.
QLocalSocket::ConnectedStateQAbstractSocket::ConnectedStateSe ha establecido una conexión.
QLocalSocket::ClosingStateQAbstractSocket::ClosingStateEl socket está a punto de cerrarse (los datos pueden estar aún esperando a ser escritos).

Ver también QLocalSocket::state().

[since 6.2] enum QLocalSocket::SocketOption
flags QLocalSocket::SocketOptions

Este enum describe las posibles opciones que se pueden usar para conectarse a un servidor. Actualmente, en Linux y Android se utiliza para especificar la conexión a un servidor que escucha un socket enlazado a una dirección abstracta.

ConstanteValorDescripción
QLocalSocket::NoOptions0x00No se ha establecido ninguna opción.
QLocalSocket::AbstractNamespaceOption0x01El socket intentará conectarse a una dirección abstracta. Esta bandera es específica para Linux y Android. En otras plataformas se ignora.

Este enum fue introducido en Qt 6.2.

El tipo SocketOptions es un typedef para QFlags<SocketOption>. Almacena una combinación OR de valores SocketOption.

Ver también socketOptions.

Documentación de Propiedades

[bindable, since 6.2] socketOptions : SocketOptions

Nota: Esta propiedad soporta QProperty bindings.

Esta propiedad contiene las opciones del socket.

Las opciones deben establecerse mientras el socket está en estado UnconnectedState.

Esta propiedad se introdujo en Qt 6.2.

Funciones de acceso:

QLocalSocket::SocketOptions socketOptions() const
void setSocketOptions(QLocalSocket::SocketOptions option)

Véase también connectToServer().

Documentación de las funciones miembro

QLocalSocket::QLocalSocket(QObject *parent = nullptr)

Crea un nuevo socket local. El argumento parent se pasa al constructor de QObject.

[virtual noexcept] QLocalSocket::~QLocalSocket()

Destruye el socket, cerrando la conexión si es necesario.

void QLocalSocket::abort()

Aborta la conexión actual y reinicia el socket. A diferencia de disconnectFromServer(), esta función cierra inmediatamente el socket, borrando cualquier dato pendiente en el búfer de escritura.

Véase también disconnectFromServer() y close().

[override virtual] qint64 QLocalSocket::bytesAvailable() const

Reimplementa: QIODevice::bytesAvailable() const.

[override virtual] qint64 QLocalSocket::bytesToWrite() const

Reimplementa: QIODevice::bytesToWrite() const.

[override virtual] bool QLocalSocket::canReadLine() const

Reimplementa: QIODevice::canReadLine() const.

[override virtual] void QLocalSocket::close()

Reimplementa: QIODevice::close().

Cierra el dispositivo de E/S para el socket y llama a disconnectFromServer() para cerrar la conexión del socket.

Ver QIODevice::close() para una descripción de las acciones que ocurren cuando se cierra un dispositivo de E/S.

Véase también abort().

void QLocalSocket::connectToServer(QIODeviceBase::OpenMode openMode = ReadWrite)

Intenta establecer una conexión con serverName(). setServerName() debe llamarse antes de abrir la conexión. Alternativamente se puede usar connectToServer(const QString &name, OpenMode openMode);

El socket se abre en el openMode dado y entra primero en ConnectingState. Si se establece una conexión, QLocalSocket entra en ConnectedState y emite connected().

Después de llamar a esta función, el socket puede emitir errorOccurred() para señalar que se ha producido un error.

Véase también state(), serverName(), y waitForConnected().

void QLocalSocket::connectToServer(const QString &name, QIODeviceBase::OpenMode openMode = ReadWrite)

Establece el servidor name e intenta establecer una conexión con él.

El socket se abre en el openMode dado y entra primero en ConnectingState. Si se establece una conexión, QLocalSocket entra en ConnectedState y emite connected().

Después de llamar a esta función, el socket puede emitir errorOccurred() para señalar que se ha producido un error.

Se trata de una función sobrecargada.

Véase también state(), serverName(), y waitForConnected().

[signal] void QLocalSocket::connected()

Esta señal se emite después de que se haya llamado a connectToServer() y se haya establecido con éxito una conexión.

Véase también connectToServer() y disconnected().

void QLocalSocket::disconnectFromServer()

Intenta cerrar el socket. Si hay datos pendientes esperando a ser escritos, QLocalSocket entrará en ClosingState y esperará hasta que todos los datos hayan sido escritos. Finalmente, entrará en UnconnectedState y emitirá la señal disconnected().

Véase también connectToServer().

[signal] void QLocalSocket::disconnected()

Esta señal se emite cuando el socket ha sido desconectado.

Véase también connectToServer(), disconnectFromServer(), abort() y connected().

QLocalSocket::LocalSocketError QLocalSocket::error() const

Devuelve el tipo de error que se produjo por última vez.

Véase también state() y errorString().

[signal] void QLocalSocket::errorOccurred(QLocalSocket::LocalSocketError socketError)

Esta señal se emite tras producirse un error. El parámetro socketError describe el tipo de error que se ha producido.

QLocalSocket::LocalSocketError no es un metatipo registrado, por lo que para conexiones en cola, tendrás que registrarlo con Q_DECLARE_METATYPE() y qRegisterMetaType().

Véase también error(), errorString(), y Creación de tipos Qt personalizados.

bool QLocalSocket::flush()

Esta función escribe tanto como sea posible desde el búfer de escritura interno al socket, sin bloquear. Si se ha escrito algún dato, esta función devuelve true; en caso contrario devuelve false.

Llame a esta función si necesita que QLocalSocket comience a enviar datos del buffer inmediatamente. El número de bytes escritos con éxito depende del sistema operativo. En la mayoría de los casos, no es necesario llamar a esta función, porque QLocalSocket empezará a enviar datos automáticamente una vez que el control vuelva al bucle de eventos. En ausencia de un bucle de eventos, llame a waitForBytesWritten() en su lugar.

Véase también write() y waitForBytesWritten().

QString QLocalSocket::fullServerName() const

Devuelve la ruta del servidor al que está conectado el socket.

Nota: El valor de retorno de esta función es específico de la plataforma.

Véase también connectToServer() y serverName().

[override virtual] bool QLocalSocket::isSequential() const

Reimplementa: QIODevice::isSequential() const.

bool QLocalSocket::isValid() const

Devuelve true si el socket es válido y está listo para su uso; en caso contrario devuelve false.

Nota: El estado del socket debe ser ConnectedState antes de que se pueda leer y escribir.

Véase también state() y connectToServer().

[override virtual] bool QLocalSocket::open(QIODeviceBase::OpenMode openMode = ReadWrite)

Reimplementa: QIODevice::open(modo QIODeviceBase::OpenMode).

Equivalente a connectToServer(modo OpenMode). El socket es abierto en el openMode dado al servidor definido por setServerName().

Nótese que a diferencia de la mayoría de las otras subclases de QIODevice, open() no puede abrir el dispositivo directamente. La función devuelve false si el socket ya estaba conectado o si el servidor al que conectarse no estaba definido y true en cualquier otro caso. Las señales connected() o errorOccurred() se emitirán una vez que el dispositivo esté realmente abierto (o la conexión haya fallado).

Véase connectToServer() para más detalles.

qint64 QLocalSocket::readBufferSize() const

Devuelve el tamaño del búfer de lectura interno. Esto limita la cantidad de datos que el cliente puede recibir antes de llamar a read() o readAll(). Un tamaño de buffer de lectura de 0 (por defecto) significa que el buffer no tiene límite de tamaño, asegurando que no se pierda ningún dato.

Véase también setReadBufferSize() y read().

[override virtual protected] qint64 QLocalSocket::readData(char *data, qint64 c)

Reimplementa: QIODevice::readData(char *data, qint64 maxSize).

[override virtual protected] qint64 QLocalSocket::readLineData(char *data, qint64 maxSize)

Reimplementa: QIODevice::readLineData(char *data, qint64 maxSize).

QString QLocalSocket::serverName() const

Devuelve el nombre del par especificado por setServerName(), o un QString vacío si setServerName() no ha sido llamado o connectToServer() ha fallado.

Véase también setServerName(), connectToServer() y fullServerName().

void QLocalSocket::setReadBufferSize(qint64 size)

Establece el tamaño del búfer de lectura interno de QLocalSocket en size bytes.

Si el tamaño del búfer está limitado a un cierto tamaño, QLocalSocket no almacenará más que este tamaño de datos. Excepcionalmente, un tamaño de buffer de 0 significa que el buffer de lectura es ilimitado y todos los datos entrantes son almacenados en el buffer. Este es el valor por defecto.

Esta opción es útil si sólo lees los datos en ciertos momentos (por ejemplo, en una aplicación de streaming en tiempo real) o si quieres proteger tu socket contra la recepción de demasiados datos, lo que eventualmente puede causar que tu aplicación se quede sin memoria.

Véase también readBufferSize() y read().

void QLocalSocket::setServerName(const QString &name)

Establezca el name del peer al que conectarse. En Windows name es el nombre de una tubería con nombre; en Unix name es el nombre de un socket de dominio local.

Esta función debe ser llamada cuando el socket no está conectado.

Véase también serverName().

bool QLocalSocket::setSocketDescriptor(qintptr socketDescriptor, QLocalSocket::LocalSocketState socketState = ConnectedState, QIODeviceBase::OpenMode openMode = ReadWrite)

Inicializa QLocalSocket con el descriptor de socket nativo socketDescriptor. Devuelve true si socketDescriptor es aceptado como un descriptor de socket válido; en caso contrario devuelve false. El socket se abre en el modo especificado por openMode, y entra en el estado de socket especificado por socketState.

Nota: No es posible inicializar dos sockets locales con el mismo descriptor de socket nativo.

Véase también socketDescriptor(), state(), y openMode().

[override virtual protected] qint64 QLocalSocket::skipData(qint64 maxSize)

Reimplementa: QIODevice::skipData(qint64 maxSize).

qintptr QLocalSocket::socketDescriptor() const

Devuelve el descriptor de socket nativo del objeto QLocalSocket si está disponible; en caso contrario devuelve -1.

El descriptor de socket no está disponible cuando QLocalSocket está en UnconnectedState. El tipo del descriptor depende de la plataforma:

  • En Windows, el valor devuelto es un Winsock 2 Socket Handle.
  • En INTEGRITY, el valor devuelto es el descriptor de socket QTcpSocket y el tipo está definido por socketDescriptor.
  • En todos los demás sistemas operativos tipo UNIX, el tipo es un descriptor de fichero que representa un socket.

Véase también setSocketDescriptor().

QLocalSocket::LocalSocketState QLocalSocket::state() const

Devuelve el estado del socket.

Véase también error().

[signal] void QLocalSocket::stateChanged(QLocalSocket::LocalSocketState socketState)

Esta señal se emite cada vez que cambia el estado de QLocalSocket. El parámetro socketState es el nuevo estado.

QLocalSocket::SocketState no es un metatipo registrado, por lo que para conexiones en cola, tendrás que registrarlo con Q_DECLARE_METATYPE() y qRegisterMetaType().

Véase también state() y Creación de tipos Qt personalizados.

[override virtual] bool QLocalSocket::waitForBytesWritten(int msecs = 30000)

Reimplementa: QIODevice::waitForBytesWritten(int msecs).

bool QLocalSocket::waitForConnected(int msecs = 30000)

Espera hasta que el socket se conecta, hasta msecs milisegundos. Si se ha establecido la conexión, esta función devuelve true; en caso contrario devuelve false. En el caso de que devuelva false, puede llamar a error() para determinar la causa del error.

El siguiente ejemplo espera hasta un segundo a que se establezca una conexión:

socket->connectToServer("mercado");if (socket->waitForConnected(1000))    qDebug("Connected!");

Si msecs es -1, esta función no agotará el tiempo de espera.

Véase también connectToServer() y connected().

bool QLocalSocket::waitForDisconnected(int msecs = 30000)

Espera hasta que el socket se haya desconectado, hasta msecs milisegundos. Si la conexión se ha desconectado con éxito, esta función devuelve true; en caso contrario devuelve false (si la operación ha expirado, si se ha producido un error, o si este QLocalSocket ya está desconectado). En el caso de que devuelva false, puede llamar a error() para determinar la causa del error.

El siguiente ejemplo espera hasta un segundo a que se cierre una conexión:

socket->disconnectFromServer();if (socket->state() == QLocalSocket::UnconnectedState ||  socket->waitForDisconnected(1000)) {    qDebug("Disconnected!");
}

Si msecs es -1, esta función no agotará el tiempo de espera.

Véase también disconnectFromServer() y close().

[override virtual] bool QLocalSocket::waitForReadyRead(int msecs = 30000)

Reimplementa: QIODevice::waitForReadyRead(int msecs).

Esta función se bloquea hasta que los datos están disponibles para su lectura y se ha emitido la señal readyRead(). La función expirará después de msecs milisegundos; el tiempo de espera por defecto es de 30000 milisegundos.

La función devuelve true si los datos están disponibles para su lectura; en caso contrario, devuelve false (si se ha producido un error o se ha agotado el tiempo de espera de la operación).

Véase también waitForBytesWritten().

[override virtual protected] qint64 QLocalSocket::writeData(const char *data, qint64 c)

Reimplementa: 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.