Sur cette page

QNetworkProxyQuery Class

La classe QNetworkProxyQuery est utilisée pour interroger les paramètres de proxy d'une socket. Plus d'informations...

En-tête : #include <QNetworkProxyQuery>
CMake : find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake : QT += network

Types publics

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

Fonctions publiques

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

Description détaillée

QNetworkProxyQuery contient les détails de la création d'une socket ou d'une requête. Il est utilisé par QNetworkProxy et QNetworkProxyFactory pour permettre aux applications d'avoir un contrôle plus fin sur les serveurs proxy utilisés, en fonction des détails de la requête. Cela permet à une application d'appliquer différents paramètres, en fonction du protocole ou du nom d'hôte de destination, par exemple.

QNetworkProxyQuery prend en charge les critères suivants pour la sélection du serveur mandataire :

  • le type de requête
  • le numéro de port local à utiliser
  • le nom de l'hôte de destination
  • le numéro de port de destination
  • le nom du protocole, tel que "http" ou "ftp"
  • l'URL demandée

Le nom de l'hôte de destination est l'hôte de la connexion dans le cas des sockets de connexion sortantes. Il s'agit du paramètre hostName transmis à QTcpSocket::connectToHost() ou du composant hôte d'une URL demandée avec QNetworkRequest.

Le numéro de port de destination est le port demandé pour la connexion dans le cas des sockets sortantes, tandis que le numéro de port local est le port que la socket souhaite utiliser localement avant de tenter la connexion externe. Dans la plupart des cas, le numéro de port local est utilisé uniquement par les sockets d'écoute (QTcpSocket) ou par les sockets de datagramme (QUdpSocket).

Le nom du protocole est une chaîne arbitraire qui indique le type de connexion tentée. Par exemple, il peut correspondre au schéma d'une URL, comme "http", "https" et "ftp". Dans la plupart des cas, la sélection du proxy ne changera pas en fonction du protocole, mais cette information est fournie au cas où un meilleur choix pourrait être fait, comme choisir un proxy HTTP de mise en cache pour les connexions basées sur HTTP, mais un proxy SOCKSv5 plus puissant pour toutes les autres.

Certains critères peuvent ne pas avoir de sens pour tous les types de requêtes. Le tableau suivant répertorie les critères les plus couramment utilisés, en fonction du type de requête.

Type de requêteDescription des critères
TcpSocketSockets normales demandant une connexion à un serveur distant, comme QTcpSocket. Le nom d'hôte et le port de l'homologue correspondent aux valeurs transmises à QTcpSocket::connectToHost(). Le port local est généralement -1, ce qui indique que la socket n'a pas de préférence quant au port à utiliser. Le composant URL n'est pas utilisé.
UdpSocketSockets basés sur des datagrammes, qui peuvent à la fois envoyer et recevoir. Les champs port local, hôte distant ou port distant peuvent tous être utilisés ou non, en fonction des caractéristiques de la socket. Le composant URL n'est pas utilisé.
SctpSocketSockets orientées message demandant une connexion à un serveur distant. Le nom d'hôte et le port de l'homologue correspondent aux valeurs transmises à QSctpSocket::connectToHost(). Le port local est généralement -1, ce qui indique que la socket n'a pas de préférence quant au port à utiliser. Le composant URL n'est pas utilisé.
TcpServerSockets serveurs passifs qui écoutent sur un port et attendent les connexions entrantes du réseau. Normalement, seul le port local est utilisé, mais l'adresse distante peut être utilisée dans certaines circonstances, par exemple pour indiquer de quel hôte distant une connexion est attendue. Le composant URL n'est pas utilisé.
UrlRequestUne requête de plus haut niveau, telle que celles provenant de QNetworkAccessManager. Ces requêtes utiliseront inévitablement un socket TCP sortant, mais ce type de requête est fourni pour indiquer que des informations plus détaillées sont présentes dans le composant URL. Pour faciliter la mise en œuvre, l'hôte et le port de l'URL sont définis comme adresse de destination.
SctpServerSockets de serveur passifs qui écoutent sur un port SCTP et attendent les connexions entrantes du réseau. Normalement, seul le port local est utilisé, mais l'adresse distante peut être utilisée dans certaines circonstances, par exemple pour indiquer de quel hôte distant une connexion est attendue. Le composant URL n'est pas utilisé.

Il convient de noter que l'un des critères peut être manquant ou inconnu (un QString vide pour le nom d'hôte ou le nom de protocole, -1 pour les numéros de port). Dans ce cas, les fonctions qui exécutent la requête doivent faire leur meilleure estimation ou appliquer des valeurs par défaut définies par l'implémentation.

Voir aussi QNetworkProxy, QNetworkProxyFactory, QNetworkAccessManager, et QAbstractSocket::setProxy().

Documentation sur les types de membres

enum QNetworkProxyQuery::QueryType

Décrit le type d'une requête QNetworkProxyQuery.

ConstanteValeurDescription
QNetworkProxyQuery::TcpSocket0une socket TCP normale, sortante
QNetworkProxyQuery::UdpSocket1une socket UDP basée sur un datagramme, qui peut être envoyée à plusieurs destinations
QNetworkProxyQuery::SctpSocket2une socket SCTP sortante orientée message
QNetworkProxyQuery::TcpServer100un serveur TCP qui écoute les connexions entrantes du réseau
QNetworkProxyQuery::UrlRequest101une requête plus complexe qui implique le chargement d'une URL
QNetworkProxyQuery::SctpServer102un serveur SCTP à l'écoute des connexions entrantes du réseau.

Voir aussi queryType() et setQueryType().

Documentation des fonctions membres

QNetworkProxyQuery::QNetworkProxyQuery()

Construit un objet QNetworkProxyQuery par défaut. Par défaut, le type de requête est QNetworkProxyQuery::TcpSocket.

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

Construit un QNetworkProxyQuery avec l'URL requestUrl et définit le type de requête à queryType.

Voir aussi protocolTag(), peerHostName() et peerPort().

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

Construit un QNetworkProxyQuery de type queryType et définit la balise de protocole à protocolTag. Ce constructeur convient aux requêtes QNetworkProxyQuery::TcpSocket car il fixe le numéro de port local à bindPort.

Notez que bindPort est de type quint16 pour indiquer le numéro de port exact qui est demandé. La valeur -1 (inconnu) n'est pas autorisée dans ce contexte.

Voir aussi localPort().

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

Construit un QNetworkProxyQuery de type queryType et définit la balise de protocole comme étant protocolTag. Ce constructeur convient aux requêtes QNetworkProxyQuery::TcpSocket, car il définit le nom d'hôte de l'homologue à hostname et le numéro de port de l'homologue à port.

QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkProxyQuery &other)

Construit un objet QNetworkProxyQuery qui est une copie de other.

[noexcept] QNetworkProxyQuery::~QNetworkProxyQuery()

Détruit cet objet QNetworkProxyQuery.

int QNetworkProxyQuery::localPort() const

Renvoie le numéro de port de la socket qui acceptera les paquets entrants des serveurs distants ou -1 si le port n'est pas connu.

Voir aussi peerPort(), peerHostName(), et setLocalPort().

QString QNetworkProxyQuery::peerHostName() const

Renvoie le nom d'hôte ou l'adresse IP de la connexion sortante demandée, ou une chaîne vide si le nom d'hôte distant n'est pas connu.

Si le type de requête est QNetworkProxyQuery::UrlRequest, cette fonction renvoie le composant hôte de l'URL demandée.

Voir aussi peerPort(), localPort() et setPeerHostName().

int QNetworkProxyQuery::peerPort() const

Renvoie le numéro de port de la requête sortante ou -1 si le numéro de port n'est pas connu.

Si le type de requête est QNetworkProxyQuery::UrlRequest, cette fonction renvoie le numéro de port de l'URL demandée. En général, les frameworks remplissent le numéro de port à partir de leurs valeurs par défaut.

Voir aussi peerHostName(), localPort() et setPeerPort().

QString QNetworkProxyQuery::protocolTag() const

Renvoie la balise de protocole pour cet objet QNetworkProxyQuery, ou un QString vide si la balise de protocole est inconnue.

Dans le cas des requêtes de type QNetworkProxyQuery::UrlRequest, cette fonction renvoie la valeur du composant "scheme" de l'URL.

Voir aussi setProtocolTag() et url().

QNetworkProxyQuery::QueryType QNetworkProxyQuery::queryType() const

Renvoie le type de requête.

Voir aussi setQueryType().

void QNetworkProxyQuery::setLocalPort(int port)

Définit le numéro de port que la socket souhaite utiliser localement pour accepter les paquets entrants provenant de serveurs distants à port. Le port local est le plus souvent utilisé avec les types de requêtes QNetworkProxyQuery::TcpServer et QNetworkProxyQuery::UdpSocket.

Les valeurs valides sont comprises entre 0 et 65535 (0 indiquant que n'importe quel numéro de port est acceptable) ou -1, ce qui signifie que le numéro de port local est inconnu ou non applicable.

Dans certaines circonstances, pour des protocoles spéciaux, le numéro de port local peut également être utilisé avec une requête de type QNetworkProxyQuery::TcpSocket. Dans ce cas, la socket indique qu'elle souhaite utiliser le numéro de port port pour se connecter à un hôte distant.

Voir aussi localPort(), setPeerPort(), et setPeerHostName().

void QNetworkProxyQuery::setPeerHostName(const QString &hostname)

Définit le nom d'hôte de la connexion sortante demandée à hostname. Un nom d'hôte vide peut être utilisé pour indiquer que l'hôte distant est inconnu.

Le nom de l'hôte homologue peut également être utilisé pour indiquer l'adresse source attendue d'une connexion entrante dans le cas des types de requêtes QNetworkProxyQuery::UdpSocket ou QNetworkProxyQuery::TcpServer.

Voir également peerHostName(), setPeerPort() et setLocalPort().

void QNetworkProxyQuery::setPeerPort(int port)

Définit le numéro de port requis pour la connexion sortante à port. Les valeurs valables sont comprises entre 1 et 65535, ou -1 pour indiquer que le numéro de port distant est inconnu.

Le numéro de port de l'homologue peut également être utilisé pour indiquer le numéro de port attendu d'une connexion entrante dans le cas des types de requêtes QNetworkProxyQuery::UdpSocket ou QNetworkProxyQuery::TcpServer.

Voir également peerPort(), setPeerHostName() et setLocalPort().

void QNetworkProxyQuery::setProtocolTag(const QString &protocolTag)

Définit la balise de protocole de cet objet QNetworkProxyQuery comme étant protocolTag.

La balise de protocole est une chaîne arbitraire qui indique le protocole utilisé sur la socket, comme "http", "xmpp", "telnet", etc. La balise de protocole est utilisée par le backend pour renvoyer une requête plus spécifique au protocole en question : par exemple, une connexion HTTP peut utiliser un serveur proxy HTTP de mise en cache, tandis que toutes les autres connexions utilisent un serveur proxy SOCKSv5 plus puissant.

Voir également protocolTag().

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

Définit le type de requête de cet objet comme étant type.

Voir aussi queryType().

void QNetworkProxyQuery::setUrl(const QUrl &url)

Définit le composant URL de cet objet QNetworkProxyQuery comme étant url. La définition de l'URL définit également la balise de protocole, le nom de l'hôte distant et le numéro de port. Cela permet de faciliter la mise en œuvre du code qui détermine le serveur proxy à utiliser.

Voir aussi url(), peerHostName() et peerPort().

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

Remplace cette instance de requête de proxy réseau par other. Cette opération est très rapide et n'échoue jamais.

QUrl QNetworkProxyQuery::url() const

Renvoie le composant URL de cet objet QNetworkProxyQuery dans le cas d'une requête de type QNetworkProxyQuery::UrlRequest.

Voir aussi setUrl().

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

Renvoie true si l'objet QNetworkProxyQuery ne contient pas les mêmes données que other.

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

Copie le contenu de other.

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

Renvoie true si l'objet QNetworkProxyQuery contient les mêmes données 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.