En esta página

QTcpServer Class

La clase QTcpServer proporciona un servidor basado en TCP. Más...

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

QSctpServer y QSslServer

Nota: Todas las funciones de esta clase son reentrantes.

Funciones Públicas

QTcpServer(QObject *parent = nullptr)
virtual ~QTcpServer()
void close()
QString errorString() const
virtual bool hasPendingConnections() const
bool isListening() const
bool listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)
(since 6.3) int listenBacklogSize() const
int maxPendingConnections() const
virtual QTcpSocket *nextPendingConnection()
void pauseAccepting()
QNetworkProxy proxy() const
void resumeAccepting()
QHostAddress serverAddress() const
QAbstractSocket::SocketError serverError() const
quint16 serverPort() const
(since 6.3) void setListenBacklogSize(int size)
void setMaxPendingConnections(int numConnections)
void setProxy(const QNetworkProxy &networkProxy)
bool setSocketDescriptor(qintptr socketDescriptor)
qintptr socketDescriptor() const
bool waitForNewConnection(int msec = 0, bool *timedOut = nullptr)

Señales

void acceptError(QAbstractSocket::SocketError socketError)
void newConnection()
(since 6.4) void pendingConnectionAvailable()

Funciones Protegidas

void addPendingConnection(QTcpSocket *socket)
virtual void incomingConnection(qintptr socketDescriptor)

Descripción Detallada

Esta clase permite aceptar conexiones TCP entrantes. Se puede especificar el puerto o hacer que QTcpServer elija uno automáticamente. Puede escuchar en una dirección específica o en todas las direcciones de la máquina.

Llame a listen() para que el servidor escuche las conexiones entrantes. La señal newConnection() se emite cada vez que un cliente se conecta al servidor. Cuando la conexión del cliente se ha añadido a la cola de conexiones pendientes mediante la función addPendingConnection(), se emite la señal pendingConnectionAvailable().

Llame a nextPendingConnection() para aceptar la conexión pendiente como una conexión QTcpSocket. La función devuelve un puntero a un QTcpSocket en QAbstractSocket::ConnectedState que puede utilizar 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, la dirección y el puerto en el que el servidor está a la escucha están disponibles como serverAddress() y serverPort().

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

Aunque QTcpServer está diseñado principalmente para su uso con un bucle de eventos, es posible utilizarlo sin uno. En ese caso, debes usar waitForNewConnection(), que se bloquea hasta que haya una conexión disponible o expire un tiempo de espera.

Vea también QTcpSocket, Fortune Server, Threaded Fortune Server, y Torrent Example.

Documentación de funciones miembro

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

Construye un objeto QTcpServer.

parent se pasa al constructor QObject.

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

[virtual noexcept] QTcpServer::~QTcpServer()

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

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

Véase también close().

[signal] void QTcpServer::acceptError(QAbstractSocket::SocketError socketError)

Esta señal se emite cuando al aceptar una nueva conexión se produce un error. El parámetro socketError describe el tipo de error que se ha producido.

Véase también pauseAccepting() y resumeAccepting().

[protected] void QTcpServer::addPendingConnection(QTcpSocket *socket)

Esta función es llamada por QTcpServer::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 pendingConnectionAvailable() después de que el socket haya sido añadido.

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

void QTcpServer::close()

Cierra el servidor. El servidor ya no escuchará conexiones entrantes.

Véase también listen().

QString QTcpServer::errorString() const

Devuelve una descripción legible por humanos del último error que se ha producido.

Véase también serverError().

[virtual] bool QTcpServer::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 QTcpServer::incomingConnection(qintptr socketDescriptor)

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

La implementación base crea un QTcpSocket, establece el descriptor de socket y luego almacena el QTcpSocket 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.

Si este servidor está usando QNetworkProxy entonces el socketDescriptor puede no ser utilizable con funciones de socket nativas, y sólo debería ser usado con QTcpSocket::setSocketDescriptor().

Nota: Si se crea otro socket en la reimplementación de este método, es necesario añadirlo al mecanismo de conexiones pendientes llamando a addPendingConnection().

Nota: Si quieres manejar una conexión entrante como un nuevo objeto QTcpSocket en otro hilo tienes que pasar el socketDescriptor al otro hilo y crear el objeto QTcpSocket allí y usar su método setSocketDescriptor().

Véase también newConnection(), nextPendingConnection(), y addPendingConnection().

bool QTcpServer::isListening() const

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

Véase también listen().

bool QTcpServer::listen(const QHostAddress &address = QHostAddress::Any, quint16 port = 0)

Indica al servidor que escuche las conexiones entrantes en la dirección address y el puerto port. Si port es 0, se elige un puerto automáticamente. Si address es QHostAddress::Any, el servidor escuchará en todas las interfaces de red.

Devuelve true en caso de éxito; en caso contrario devuelve false.

Véase también isListening().

[since 6.3] int QTcpServer::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 QTcpServer::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 QTcpServer::newConnection()

Esta señal se emite cada vez que una nueva conexión está disponible, independientemente de si se ha añadido o no a la cola de conexiones pendientes.

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

[virtual] QTcpSocket *QTcpServer::nextPendingConnection()

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

El socket se crea como hijo del servidor, lo que significa que se borra automáticamente cuando se destruye el objeto QTcpServer. 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.

Nota: El objeto QTcpSocket devuelto no puede ser utilizado desde otro hilo. Si desea utilizar una conexión entrante desde otro subproceso, debe anular incomingConnection().

Véase también hasPendingConnections().

void QTcpServer::pauseAccepting()

Detiene la aceptación de nuevas conexiones. Las conexiones en cola permanecerán en cola.

Véase también resumeAccepting().

[private signal, since 6.4] void QTcpServer::pendingConnectionAvailable()

Esta señal se emite cada vez que se añade una nueva conexión a la cola de conexiones pendientes.

Nota: Se trata de una señal privada. Puede ser utilizada en conexiones de señal pero no puede ser emitida por el usuario.

Esta función se introdujo en Qt 6.4.

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

QNetworkProxy QTcpServer::proxy() const

Devuelve el proxy de red para este socket. Por defecto se utiliza QNetworkProxy::DefaultProxy.

Véase también setProxy() y QNetworkProxy.

void QTcpServer::resumeAccepting()

Reanuda la aceptación de nuevas conexiones.

Véase también pauseAccepting().

QHostAddress QTcpServer::serverAddress() const

Devuelve la dirección del servidor si éste está a la escucha de conexiones; en caso contrario devuelve QHostAddress::Null.

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

QAbstractSocket::SocketError QTcpServer::serverError() const

Devuelve un código de error para el último error ocurrido.

Véase también errorString().

quint16 QTcpServer::serverPort() const

Devuelve el puerto del servidor si el servidor está escuchando conexiones; en caso contrario devuelve 0.

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

[since 6.3] void QTcpServer::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 QTcpServer::setMaxPendingConnections(int numConnections)

Establece el número máximo de conexiones pendientes aceptadas en numConnections. QTcpServer no aceptará más de numConnections conexiones entrantes antes de que se llame a nextPendingConnection(). Por defecto, el límite es de 30 conexiones pendientes.

Los clientes pueden seguir conectándose después de que el servidor haya alcanzado su número máximo de conexiones pendientes (es decir, QTcpSocket puede seguir emitiendo la señal connected()). QTcpServer dejará de aceptar las nuevas conexiones, pero el sistema operativo puede seguir manteniéndolas en cola.

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

void QTcpServer::setProxy(const QNetworkProxy &networkProxy)

Establece el proxy de red explícito para este socket en networkProxy.

Para desactivar el uso de un proxy para este socket, utiliza el tipo de proxy QNetworkProxy::NoProxy:

server->setProxy(QNetworkProxy::NoProxy);

Véase también proxy() y QNetworkProxy.

bool QTcpServer::setSocketDescriptor(qintptr socketDescriptor)

Establece el descriptor de socket que este servidor debe usar cuando escucha conexiones entrantes a socketDescriptor. Devuelve true si el socket se ha configurado correctamente; en caso contrario devuelve false.

Se asume que el socket está en estado de escucha.

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

qintptr QTcpServer::socketDescriptor() const

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

Si el servidor está usando QNetworkProxy, el descriptor devuelto puede no ser utilizable con funciones de socket nativas.

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

bool QTcpServer::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 está desaconsejado en una aplicación GUI de un solo hilo, 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.