En esta página

QNetworkProxyQuery Class

La clase QNetworkProxyQuery se utiliza para consultar la configuración proxy de un socket. Más...

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

Tipos Públicos

enum QueryType { TcpSocket, UdpSocket, SctpSocket, TcpServer, UrlRequest, SctpServer }

Funciones Públicas

QNetworkProxyQuery()
QNetworkProxyQuery(const QUrl &requestUrl, QNetworkProxyQuery::QueryType queryType = UrlRequest)
QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType queryType = TcpServer)
QNetworkProxyQuery(const QString &hostname, int port, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType queryType = TcpSocket)
QNetworkProxyQuery(const QNetworkProxyQuery &other)
~QNetworkProxyQuery()
int localPort() const
QString peerHostName() const
int peerPort() const
QString protocolTag() const
QNetworkProxyQuery::QueryType queryType() const
void setLocalPort(int port)
void setPeerHostName(const QString &hostname)
void setPeerPort(int port)
void setProtocolTag(const QString &protocolTag)
void setQueryType(QNetworkProxyQuery::QueryType type)
void setUrl(const QUrl &url)
void swap(QNetworkProxyQuery &other)
QUrl url() const
bool operator!=(const QNetworkProxyQuery &other) const
QNetworkProxyQuery &operator=(const QNetworkProxyQuery &other)
bool operator==(const QNetworkProxyQuery &other) const

Descripción Detallada

QNetworkProxyQuery contiene los detalles de un socket que se está creando o de una petición que se está realizando. Es utilizado por QNetworkProxy y QNetworkProxyFactory para permitir a las aplicaciones tener un control más preciso sobre qué servidores proxy se utilizan, dependiendo de los detalles de la consulta. Esto permite a una aplicación aplicar diferentes configuraciones, según el protocolo o el nombre de host de destino, por ejemplo.

QNetworkProxyQuery soporta los siguientes criterios para seleccionar el proxy:

  • el tipo de consulta
  • el número de puerto local a utilizar
  • el nombre del host de destino
  • el número de puerto de destino
  • el nombre del protocolo, como "http" o "ftp
  • la URL solicitada

El nombre del host de destino es el host de la conexión en el caso de sockets de conexión salientes. Es el parámetro hostName pasado a QTcpSocket::connectToHost() o el componente host de una URL solicitada con QNetworkRequest.

El número de puerto de destino es el puerto solicitado para conectarse en el caso de sockets salientes, mientras que el número de puerto local es el puerto que el socket desea utilizar localmente antes de intentar la conexión externa. En la mayoría de los casos, el número de puerto local es utilizado sólo por sockets de escucha (QTcpSocket) o por sockets de datagramas (QUdpSocket).

El nombre del protocolo es una cadena arbitraria que indica el tipo de conexión que se está intentando. Por ejemplo, puede coincidir con el esquema de una URL, como "http", "https" y "ftp". En la mayoría de los casos, la selección del proxy no cambiará dependiendo del protocolo, pero esta información se proporciona en caso de que se pueda hacer una mejor elección, como elegir un proxy HTTP con caché para conexiones basadas en HTTP, pero un proxy SOCKSv5 más potente para todas las demás.

Algunos de los criterios pueden no tener sentido en todos los tipos de consulta. En la tabla siguiente se enumeran los criterios más utilizados, según el tipo de consulta.

Tipo de consultaDescripción
TcpSocketSockets normales que solicitan una conexión a un servidor remoto, como QTcpSocket. El nombre de host y el puerto del peer coinciden con los valores pasados a QTcpSocket::connectToHost(). El puerto local suele ser -1, lo que indica que el socket no tiene preferencia en cuanto al puerto que debe utilizarse. El componente URL no se utiliza.
UdpSocketSockets basados en datagramas, que pueden tanto enviar como recibir. Los campos puerto local, host remoto o puerto remoto pueden utilizarse o no, dependiendo de las características del socket. El componente URL no se utiliza.
SctpSocketLos sockets orientados a mensajes solicitan una conexión a un servidor remoto. El nombre de host y el puerto coinciden con los valores pasados a QSctpSocket::connectToHost(). El puerto local suele ser -1, lo que indica que el socket no tiene preferencia en cuanto al puerto que debe utilizarse. El componente URL no se utiliza.
TcpServerSockets de servidor pasivos que escuchan en un puerto y esperan conexiones entrantes de la red. Normalmente, sólo se utiliza el puerto local, pero la dirección remota podría utilizarse en circunstancias específicas, por ejemplo para indicar de qué host remoto se espera una conexión. El componente URL no se utiliza.
UrlRequestUna petición de más alto nivel, como las procedentes de QNetworkAccessManager. Estas peticiones utilizarán inevitablemente un socket TCP saliente, pero el tipo de consulta this se proporciona para indicar que hay información más detallada en el componente URL. Para facilitar la implementación, el host y el puerto de la URL se establecen como dirección de destino.
SctpServerSockets de servidor pasivos que escuchan en un puerto SCTP y esperan conexiones entrantes de la red. Normalmente, sólo se utiliza el puerto local, pero la dirección remota podría utilizarse en circunstancias específicas, por ejemplo, para indicar de qué host remoto se espera una conexión. El componente URL no se utiliza.

Hay que tener en cuenta que cualquiera de los criterios puede faltar o ser desconocido (un QString vacío para el nombre del host o del protocolo, -1 para los números de puerto). Si esto ocurre, las funciones que ejecutan la consulta deben hacer su mejor suposición o aplicar algunos valores por defecto definidos por la implementación.

Véase también QNetworkProxy, QNetworkProxyFactory, QNetworkAccessManager, y QAbstractSocket::setProxy().

Documentación de tipos de miembros

enum QNetworkProxyQuery::QueryType

Describe el tipo de una consulta QNetworkProxyQuery.

ConstanteValorDescripción
QNetworkProxyQuery::TcpSocket0un socket TCP saliente normal
QNetworkProxyQuery::UdpSocket1un socket UDP basado en datagramas, que podría enviar a múltiples destinos
QNetworkProxyQuery::SctpSocket2un socket SCTP saliente orientado a mensajes
QNetworkProxyQuery::TcpServer100un servidor TCP que escucha las conexiones entrantes de la red
QNetworkProxyQuery::UrlRequest101una solicitud más compleja que implique la carga de una URL
QNetworkProxyQuery::SctpServer102un servidor SCTP a la escucha de conexiones entrantes procedentes de la red

Véase también queryType() y setQueryType().

Documentación de las funciones miembro

QNetworkProxyQuery::QNetworkProxyQuery()

Construye un objeto QNetworkProxyQuery por defecto. Por defecto, el tipo de consulta será QNetworkProxyQuery::TcpSocket.

[explicit] QNetworkProxyQuery::QNetworkProxyQuery(const QUrl &requestUrl, QNetworkProxyQuery::QueryType queryType = UrlRequest)

Construye un QNetworkProxyQuery con la URL requestUrl y establece el tipo de consulta a queryType.

Véase también protocolTag(), peerHostName(), y peerPort().

[explicit] QNetworkProxyQuery::QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType queryType = TcpServer)

Construye un QNetworkProxyQuery de tipo queryType y establece que la etiqueta de protocolo sea protocolTag. Este constructor es adecuado para consultas QNetworkProxyQuery::TcpSocket porque establece el número de puerto local en bindPort.

Observe que bindPort es de tipo quint16 para indicar el número de puerto exacto que se solicita. El valor -1 (desconocido) no está permitido en este contexto.

Véase también localPort().

QNetworkProxyQuery::QNetworkProxyQuery(const QString &hostname, int port, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType queryType = TcpSocket)

Construye un QNetworkProxyQuery de tipo queryType y establece que la etiqueta de protocolo sea protocolTag. Este constructor es adecuado para consultas QNetworkProxyQuery::TcpSocket, porque establece el nombre de host del par en hostname y el número de puerto del par en port.

QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkProxyQuery &other)

Construye un objeto QNetworkProxyQuery que es una copia de other.

[noexcept] QNetworkProxyQuery::~QNetworkProxyQuery()

Destruye este objeto QNetworkProxyQuery.

int QNetworkProxyQuery::localPort() const

Devuelve el número de puerto del socket que aceptará paquetes entrantes de servidores remotos o -1 si no se conoce el puerto.

Véase también peerPort(), peerHostName() y setLocalPort().

QString QNetworkProxyQuery::peerHostName() const

Devuelve el nombre de host o la dirección IP de la conexión saliente solicitada, o una cadena vacía si no se conoce el nombre de host remoto.

Si el tipo de consulta es QNetworkProxyQuery::UrlRequest, esta función devuelve el componente host de la URL solicitada.

Véase también peerPort(), localPort() y setPeerHostName().

int QNetworkProxyQuery::peerPort() const

Devuelve el número de puerto de la petición saliente o -1 si no se conoce el número de puerto.

Si el tipo de consulta es QNetworkProxyQuery::UrlRequest, esta función devuelve el número de puerto de la URL solicitada. En general, los frameworks rellenarán el número de puerto a partir de sus valores por defecto.

Véase también peerHostName(), localPort(), y setPeerPort().

QString QNetworkProxyQuery::protocolTag() const

Devuelve la etiqueta de protocolo para este objeto QNetworkProxyQuery, o un QString vacío en caso de que la etiqueta de protocolo sea desconocida.

En el caso de consultas de tipo QNetworkProxyQuery::UrlRequest, esta función devuelve el valor del componente scheme de la URL.

Véase también setProtocolTag() y url().

QNetworkProxyQuery::QueryType QNetworkProxyQuery::queryType() const

Devuelve el tipo de consulta.

Véase también setQueryType().

void QNetworkProxyQuery::setLocalPort(int port)

Establece el número de puerto que el socket desea utilizar localmente para aceptar paquetes entrantes de servidores remotos a port. El puerto local se utiliza más a menudo con los tipos de consulta QNetworkProxyQuery::TcpServer y QNetworkProxyQuery::UdpSocket.

Los valores válidos son de 0 a 65535 (con 0 indicando que cualquier número de puerto será aceptable) o -1, que significa que el número de puerto local es desconocido o no aplicable.

En algunas circunstancias, para protocolos especiales, es el número de puerto local también se puede utilizar con una consulta de tipo QNetworkProxyQuery::TcpSocket. Cuando esto ocurre, el socket está indicando que desea utilizar el número de puerto port cuando se conecta a un host remoto.

Véase también localPort(), setPeerPort(), y setPeerHostName().

void QNetworkProxyQuery::setPeerHostName(const QString &hostname)

Establece el nombre de host de la conexión saliente que se solicita a hostname. Se puede utilizar un nombre de host vacío para indicar que el host remoto es desconocido.

El nombre de host par también puede utilizarse para indicar la dirección de origen esperada de una conexión entrante en el caso de los tipos de consulta QNetworkProxyQuery::UdpSocket o QNetworkProxyQuery::TcpServer.

Véase también peerHostName(), setPeerPort() y setLocalPort().

void QNetworkProxyQuery::setPeerPort(int port)

Establece que el número de puerto solicitado para la conexión saliente sea port. Los valores válidos son de 1 a 65535, o -1 para indicar que el número de puerto remoto es desconocido.

El número de puerto peer también puede utilizarse para indicar el número de puerto esperado de una conexión entrante en el caso de los tipos de consulta QNetworkProxyQuery::UdpSocket o QNetworkProxyQuery::TcpServer.

Véase también peerPort(), setPeerHostName() y setLocalPort().

void QNetworkProxyQuery::setProtocolTag(const QString &protocolTag)

Establece la etiqueta de protocolo de este objeto QNetworkProxyQuery en protocolTag.

La etiqueta de protocolo es una cadena arbitraria que indica con qué protocolo se está hablando a través del socket, como "http", "xmpp", "telnet", etc. La etiqueta de protocolo es utilizada por el backend para devolver una petición más específica para el protocolo en cuestión: por ejemplo, una conexión HTTP podría utilizar un servidor proxy HTTP de caché, mientras que el resto de conexiones utilizan un servidor proxy SOCKSv5 más potente.

Véase también protocolTag().

void QNetworkProxyQuery::setQueryType(QNetworkProxyQuery::QueryType type)

Establece el tipo de consulta de este objeto en type.

Véase también queryType().

void QNetworkProxyQuery::setUrl(const QUrl &url)

Establece el componente URL de este objeto QNetworkProxyQuery para que sea url. Al establecer la URL también se establecerá la etiqueta de protocolo, el nombre del host remoto y el número de puerto. Esto se hace para facilitar la implementación del código que determina el servidor proxy a utilizar.

Véase también url(), peerHostName(), y peerPort().

[noexcept] void QNetworkProxyQuery::swap(QNetworkProxyQuery &other)

Intercambia esta instancia de consulta de proxy de red con other. Esta operación es muy rápida y nunca falla.

QUrl QNetworkProxyQuery::url() const

Devuelve el componente URL de este objeto QNetworkProxyQuery en caso de una consulta de tipo QNetworkProxyQuery::UrlRequest.

Véase también setUrl().

bool QNetworkProxyQuery::operator!=(const QNetworkProxyQuery &other) const

Devuelve true si este objeto QNetworkProxyQuery no contiene los mismos datos que other.

QNetworkProxyQuery &QNetworkProxyQuery::operator=(const QNetworkProxyQuery &other)

Copia el contenido de other.

bool QNetworkProxyQuery::operator==(const QNetworkProxyQuery &other) const

Devuelve true si este objeto QNetworkProxyQuery contiene los mismos datos que other.

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