En esta página

QLocalServer Class

La clase QLocalServer proporciona un servidor local basado en sockets. Más...

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

Tipos públicos

enum SocketOption { NoOptions, UserAccessOption, GroupAccessOption, OtherAccessOption, WorldAccessOption, AbstractNamespaceOption }
flags SocketOptions

Propiedades

Funciones públicas

QLocalServer(QObject *parent = nullptr)
virtual ~QLocalServer()
QBindable<QLocalServer::SocketOptions> bindableSocketOptions()
void close()
QString errorString() const
QString fullServerName() const
virtual bool hasPendingConnections() const
bool isListening() const
bool listen(const QString &name)
bool listen(qintptr socketDescriptor)
(since 6.3) int listenBacklogSize() const
int maxPendingConnections() const
virtual QLocalSocket *nextPendingConnection()
QAbstractSocket::SocketError serverError() const
QString serverName() const
(since 6.3) void setListenBacklogSize(int size)
void setMaxPendingConnections(int numConnections)
void setSocketOptions(QLocalServer::SocketOptions options)
qintptr socketDescriptor() const
QLocalServer::SocketOptions socketOptions() const
bool waitForNewConnection(int msec = 0, bool *timedOut = nullptr)

Señales

void newConnection()

Miembros públicos estáticos

bool removeServer(const QString &name)

Funciones protegidas

(since 6.8) void addPendingConnection(QLocalSocket *socket)
virtual void incomingConnection(quintptr socketDescriptor)

Descripción detallada

Esta clase permite aceptar conexiones de socket locales entrantes.

Llame a listen() para que el servidor comience a escuchar conexiones entrantes en una clave especificada. La señal newConnection() se emite cada vez que un cliente se conecta al servidor.

Llame a nextPendingConnection() para aceptar la conexión pendiente como una conexión QLocalSocket. La función devuelve un puntero a un QLocalSocket que puede utilizarse para comunicarse con el cliente.

Si se produce un error, serverError() devuelve el tipo de error, y se puede llamar a errorString() para obtener una descripción legible por humanos de lo ocurrido.

Cuando se está a la escucha de conexiones, el nombre con el que el servidor está a la escucha está disponible a través de serverName().

Llamar a close() hace que QLocalServer deje de escuchar conexiones entrantes.

Aunque QLocalServer esta diseñado para usarse con un bucle de eventos, es posible usarlo sin uno. En ese caso, debes usar waitForNewConnection(), que se bloquea hasta que haya una conexión disponible o expire un tiempo de espera.

Véase también QLocalSocket y QTcpServer.

Documentación de tipos de miembros

enum QLocalServer::SocketOption
flags QLocalServer::SocketOptions

Este enum describe las posibles opciones que se pueden usar para crear el socket. Esto cambia los permisos de acceso en plataformas (Linux, Windows) que soportan permisos de acceso en el socket. Tanto GroupAccess como OtherAccess pueden variar ligeramente en su significado dependiendo de la plataforma. En Linux y Android es posible utilizar sockets con direcciones abstractas; los permisos de socket no tienen significado para tales sockets.

ConstanteValorDescripción
QLocalServer::NoOptions0x0No se han establecido restricciones de acceso.
QLocalServer::UserAccessOption0x01El acceso está restringido al mismo usuario que el proceso que creó el socket.
QLocalServer::GroupAccessOption0x2El acceso está restringido al mismo grupo pero no al usuario que creó el socket en Linux. El acceso está restringido al grupo principal del proceso en Windows
QLocalServer::OtherAccessOption0x4El acceso está disponible para todos excepto el usuario y el grupo que creó el socket en Linux. El acceso está disponible para todos en Windows.
QLocalServer::WorldAccessOption0x7Sin restricciones de acceso.
QLocalServer::AbstractNamespaceOption0x8El socket de escucha se creará en el espacio de nombres abstracto. Esta bandera es específica para Linux. En el caso de otras plataformas, en aras de la portabilidad del código, esta bandera es equivalente a WorldAccessOption.

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

Véase también socketOptions.

Documentación de Propiedades

[bindable] socketOptions : SocketOptions

Nota: Esta propiedad soporta QProperty bindings.

Esta propiedad contiene las opciones del socket que controlan su funcionamiento.

Por ejemplo, el socket puede restringir el acceso a qué ids de usuario pueden conectarse al socket.

Estas opciones deben establecerse antes de llamar a listen().

En algunos casos, como con los sockets de dominio Unix en Linux, el acceso al socket estará determinado por los permisos del sistema de archivos, y se crean basándose en la umask. Establecer las banderas de acceso anulará esto y restringirá o permitirá el acceso según se especifique.

Otros sistemas operativos basados en Unix, como macOS, no respetan los permisos de archivo para los sockets de dominio Unix y por defecto tienen WorldAccess y estos indicadores de permiso no tendrán efecto.

En Windows, UserAccessOption es suficiente para permitir que un proceso no elevado se conecte a un servidor local creado por un proceso elevado ejecutado por el mismo usuario. GroupAccessOption se refiere al grupo primario del proceso (ver TokenPrimaryGroup en la documentación de Windows). OtherAccessOption se refiere al conocido grupo "Everyone".

En plataformas Linux es posible crear un socket en el espacio de nombres abstracto, que es independiente del sistema de ficheros. El uso de este tipo de socket implica ignorar las opciones de permisos. En otras plataformas AbstractNamespaceOption es equivalente a WorldAccessOption.

Por defecto ninguna de las banderas está establecida, los permisos de acceso son los predeterminados de la plataforma.

Funciones de acceso:

QLocalServer::SocketOptions socketOptions() const
void setSocketOptions(QLocalServer::SocketOptions options)

Véase también listen().

Documentación de funciones miembro

[explicit] QLocalServer::QLocalServer(QObject *parent = nullptr)

Crea un nuevo servidor local de sockets con la dirección parent.

Véase también listen().

[virtual noexcept] QLocalServer::~QLocalServer()

Destruye el objeto QLocalServer. Si el servidor está escuchando conexiones, se cierra automáticamente.

Cualquier QLocalSockets cliente que aún esté conectado debe desconectarse o ser reparentado antes de que el servidor sea eliminado.

Ver también close().

[protected, since 6.8] void QLocalServer::addPendingConnection(QLocalSocket *socket)

Esta función es llamada por QLocalServer::incomingConnection() para añadir socket a la lista de conexiones entrantes pendientes.

Nota: No olvide llamar a este miembro desde el reimplementado incomingConnection() si no quiere romper el mecanismo de conexiones pendientes. Esta función emite la señal newConnection() después de que el socket haya sido añadido.

Esta función se introdujo en Qt 6.8.

Véase también incomingConnection() y newConnection().

void QLocalServer::close()

Detiene la escucha de conexiones entrantes. Las conexiones existentes no se verán afectadas, pero las nuevas conexiones serán rechazadas.

Véase también isListening() y listen().

QString QLocalServer::errorString() const

Devuelve el mensaje legible por humanos apropiado para el error actual notificado por serverError(). Si no se dispone de una cadena adecuada, se devuelve una cadena vacía.

Véase también serverError().

QString QLocalServer::fullServerName() const

Devuelve la ruta completa en la que el servidor está escuchando.

Nota: Esto es específico de la plataforma

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

[virtual] bool QLocalServer::hasPendingConnections() const

Devuelve true si el servidor tiene una conexión pendiente; en caso contrario devuelve false.

Véase también nextPendingConnection() y setMaxPendingConnections().

[virtual protected] void QLocalServer::incomingConnection(quintptr socketDescriptor)

Esta función virtual es llamada por QLocalServer cuando una nueva conexión está disponible. socketDescriptor es el descriptor de socket nativo para la conexión aceptada.

La implementación base crea un QLocalSocket, establece el descriptor de socket y luego almacena el QLocalSocket en una lista interna de conexiones pendientes. Finalmente se emite newConnection().

Reimplemente esta función para alterar el comportamiento del servidor cuando haya una conexión disponible.

Ver también newConnection(), nextPendingConnection(), y QLocalSocket::setSocketDescriptor().

bool QLocalServer::isListening() const

Devuelve true si el servidor está a la escucha de conexiones entrantes, false en caso contrario.

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

bool QLocalServer::listen(const QString &name)

Indica al servidor que escuche las conexiones entrantes en name. Si el servidor ya está escuchando, listen() fallará. Devuelve true en caso de éxito, false en caso contrario.

name puede ser un único nombre y QLocalServer determinará la ruta correcta específica de la plataforma. serverName() devolverá el nombre que fue pasado a listen().

Normalmente se pasa un nombre como "foo", pero en Unix puede ser una ruta como "/tmp/foo" y en Windows puede ser una ruta como "\pipe\foo ".

Nota: En Unix, si el servidor ha fallado previamente sin cerrarse, listen() fallará con AddressInUseError. Para crear un nuevo servidor, primero debe eliminarse el archivo. En Windows, dos servidores locales pueden escuchar la misma tubería al mismo tiempo, pero cada conexión entrante irá a cualquiera de ellos.

Véase también serverName(), isListening(), y close().

bool QLocalServer::listen(qintptr socketDescriptor)

Indica al servidor que escuche las conexiones entrantes en socketDescriptor. La propiedad devuelve false si el servidor está escuchando actualmente. En caso de éxito, devuelve true; en caso contrario, devuelve false. El socket debe estar preparado para aceptar nuevas conexiones sin que se llamen funciones adicionales específicas de la plataforma. El socket se pone en modo no-bloqueo.

serverName(), fullServerName() pueden devolver una cadena con un nombre si esta opción está soportada por la plataforma; en caso contrario, devuelven un QString vacío. En particular, las direcciones de sockets en el espacio de nombres abstracto soportado por Linux no producirán nombres útiles si contienen caracteres no imprimibles.

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

[since 6.3] int QLocalServer::listenBacklogSize() const

Devuelve el tamaño de la cola de conexiones pendientes de aceptar.

Esta función se introdujo en Qt 6.3.

Véase también setListenBacklogSize().

int QLocalServer::maxPendingConnections() const

Devuelve el número máximo de conexiones aceptadas pendientes. El valor por defecto es 30.

Véase también setMaxPendingConnections() y hasPendingConnections().

[signal] void QLocalServer::newConnection()

Esta señal se emite cada vez que hay una nueva conexión disponible.

Véase también hasPendingConnections() y nextPendingConnection().

[virtual] QLocalSocket *QLocalServer::nextPendingConnection()

Devuelve la siguiente conexión pendiente como un objeto QLocalSocket conectado.

El socket se crea como hijo del servidor, lo que significa que se borra automáticamente cuando se destruye el objeto QLocalServer. Aún así, es una buena idea borrar el objeto explícitamente cuando haya terminado con él, para evitar desperdiciar memoria.

nullptr se devuelve si se llama a esta función cuando no hay conexiones pendientes.

Véase también hasPendingConnections(), newConnection(), y incomingConnection().

[static] bool QLocalServer::removeServer(const QString &name)

Elimina cualquier instancia de servidor que pudiera hacer fallar una llamada a listen() y devuelve true si tiene éxito; en caso contrario devuelve false. Esta función está pensada para recuperarse de un fallo, cuando la instancia anterior del servidor no ha sido limpiada.

En Windows, esta función no hace nada; en Unix, elimina el fichero de socket dado por name.

Advertencia: Tenga cuidado de no eliminar sockets de instancias en ejecución.

QAbstractSocket::SocketError QLocalServer::serverError() const

Devuelve el tipo de error que se produjo en último lugar o NoError.

Véase también errorString().

QString QLocalServer::serverName() const

Devuelve el nombre del servidor si el servidor está escuchando conexiones; en caso contrario devuelve QString().

Véase también listen() y fullServerName().

[since 6.3] void QLocalServer::setListenBacklogSize(int size)

Establece el tamaño de la cola de conexiones pendientes de aceptar en size. El sistema operativo puede reducir o ignorar este valor. Por defecto, el tamaño de la cola es 50.

Nota: Esta propiedad debe establecerse antes de llamar a listen().

Esta función se introdujo en Qt 6.3.

Véase también listenBacklogSize().

void QLocalServer::setMaxPendingConnections(int numConnections)

Establece el número máximo de conexiones pendientes aceptadas en numConnections. QLocalServer no aceptará más de numConnections conexiones entrantes antes de que se llame a nextPendingConnection().

Nota: Aunque QLocalServer dejará de aceptar nuevas conexiones después de haber alcanzado su número máximo de conexiones pendientes, el sistema operativo puede seguir manteniéndolas en cola, lo que hará que los clientes indiquen que está conectado.

Véase también maxPendingConnections() y hasPendingConnections().

qintptr QLocalServer::socketDescriptor() const

Devuelve el descriptor de socket nativo que el servidor utiliza para escuchar las instrucciones entrantes, o -1 si el servidor no está escuchando.

El tipo de 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 QTcpServer 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 a la escucha.

Véase también listen().

QLocalServer::SocketOptions QLocalServer::socketOptions() const

Devuelve las opciones de socket establecidas en el socket.

Nota: Función Getter para la propiedad socketOptions.

Véase también setSocketOptions().

bool QLocalServer::waitForNewConnection(int msec = 0, bool *timedOut = nullptr)

Espera como máximo msec milisegundos o hasta que haya una conexión disponible. Devuelve true si hay una conexión disponible; en caso contrario, devuelve false. Si la operación ha expirado y timedOut no es nullptr, *timedOut se pondrá a true.

Se trata de una llamada a una función de bloqueo. Su uso es desaconsejable en una aplicación GUI monohilo, ya que toda la aplicación dejará de responder hasta que la función retorne. waitForNewConnection() es útil sobre todo cuando no hay un bucle de eventos disponible.

La alternativa no bloqueante es conectarse a la señal newConnection().

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

Véase también hasPendingConnections() y nextPendingConnection().

© 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.