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
(since 6.2)socketOptions : SocketOptions
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().
| Constante | Valor | Descripción |
|---|---|---|
QLocalSocket::ConnectionRefusedError | QAbstractSocket::ConnectionRefusedError | La conexión fue rechazada por el peer (o expiró). |
QLocalSocket::PeerClosedError | QAbstractSocket::RemoteHostClosedError | El 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::ServerNotFoundError | QAbstractSocket::HostNotFoundError | No se ha encontrado el nombre del socket local. |
QLocalSocket::SocketAccessError | QAbstractSocket::SocketAccessError | La operación de socket falló porque la aplicación carecía de los privilegios necesarios. |
QLocalSocket::SocketResourceError | QAbstractSocket::SocketResourceError | El sistema local se ha quedado sin recursos (por ejemplo, demasiados sockets). |
QLocalSocket::SocketTimeoutError | QAbstractSocket::SocketTimeoutError | El tiempo de espera de la operación de socket ha expirado. |
QLocalSocket::DatagramTooLargeError | QAbstractSocket::DatagramTooLargeError | El datagrama era mayor que el límite del sistema operativo (que puede ser tan bajo como 8192 bytes). |
QLocalSocket::ConnectionError | QAbstractSocket::NetworkError | Se ha producido un error en la conexión. |
QLocalSocket::UnsupportedSocketOperationError | QAbstractSocket::UnsupportedSocketOperationError | La operación de socket solicitada no está soportada por el sistema operativo local. |
QLocalSocket::OperationError | QAbstractSocket::OperationError | Se intentó realizar una operación mientras el socket estaba en un estado que no lo permitía. |
QLocalSocket::UnknownSocketError | QAbstractSocket::UnknownSocketError | Se ha producido un error no identificado. |
enum QLocalSocket::LocalSocketState
Este enum describe los diferentes estados en los que puede estar un socket.
| Constante | Valor | Descripción |
|---|---|---|
QLocalSocket::UnconnectedState | QAbstractSocket::UnconnectedState | El socket no está conectado. |
QLocalSocket::ConnectingState | QAbstractSocket::ConnectingState | El socket ha comenzado a establecer una conexión. |
QLocalSocket::ConnectedState | QAbstractSocket::ConnectedState | Se ha establecido una conexión. |
QLocalSocket::ClosingState | QAbstractSocket::ClosingState | El 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.
| Constante | Valor | Descripción |
|---|---|---|
QLocalSocket::NoOptions | 0x00 | No se ha establecido ninguna opción. |
QLocalSocket::AbstractNamespaceOption | 0x01 | El 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.