Sur cette page

QNetworkProxyQuery Class

La classe `QNetworkProxyQuery` permet d'interroger les paramètres de proxy d'un socket. En savoir plus...

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 d'un socket en cours de création ou d'une requête en cours d'exécution. Il est utilisé par QNetworkProxy et QNetworkProxyFactory pour permettre aux applications d'exercer 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 proxy :

  • le type de requête
  • le numéro de port local à utiliser
  • le nom d’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 d’hôte de destination correspond à l’hôte de la connexion dans le cas des sockets de connexion sortantes. Il s’agit du paramètre hostName transmis à la fonction QTcpSocket::connectToHost() ou de la partie « hôte » d’une URL demandée via QNetworkRequest.

Le numéro de port de destination correspond au port vers lequel la connexion est demandée dans le cas des sockets sortants, tandis que le numéro de port local correspond au port que le 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 datagrammes (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, le choix du proxy ne varie pas en fonction du protocole, mais cette information est fournie au cas où un meilleur choix serait possible, par exemple en sélectionnant un proxy HTTP avec mise en cache pour les connexions HTTP, mais un proxy SOCKSv5 plus performant pour toutes les autres.

Certains critères peuvent ne pas s’appliquer à 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
TcpSocketSockets normaux demandant une connexion à un serveur distant, comme QTcpSocket. Le nom d’hôte et le port du pair correspondent aux valeurs transmises à QTcpSocket::connectToHost(). Le port local est généralement -1, ce qui indique que le socket n’a aucune préférence quant au port à utiliser. Le composant URL n’est pas utilisé.
UdpSocketSockets basées 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 laissés vides, selon les caractéristiques de la socket. Le composant URL n’est pas utilisé.
SctpSocketSockets orientées messages demandant une connexion à un serveur distant. Le nom d’hôte du pair et le port du pair correspondent aux valeurs transmises à la fonction 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. La composante URL n’est pas utilisée.
TcpServerSockets de serveur passif qui écoutent sur un port et attendent les connexions entrantes provenant du réseau. Normalement, seul le port local est utilisé, mais l’adresse distante peut être utilisée dans certaines circonstances spécifiques, par exemple pour indiquer de quel hôte distant une connexion est attendue. La composante URL n’est pas utilisée.
UrlRequestUne requête de niveau plus élevé, 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 la composante 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 des connexions entrantes provenant 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. La composante URL n’est pas utilisée.

Il convient de noter que l’un quelconque de ces critères peut être absent ou inconnu (un QString vide pour le nom d’hôte ou le nom de protocole, -1 pour les numéros de port). Si tel est le cas, les fonctions exécutant la requête doivent faire leur meilleure estimation ou appliquer des valeurs par défaut définies par l’implémentation.

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

Documentation sur les types de membres

enum QNetworkProxyQuery::QueryType

Décrit le type d'une requête « one- QNetworkProxyQuery ».

ConstanteValeurDescription
QNetworkProxyQuery::TcpSocket0un socket TCP sortant standard
QNetworkProxyQuery::UdpSocket1un socket UDP basé sur des datagrammes, pouvant envoyer des données vers plusieurs destinations
QNetworkProxyQuery::SctpSocket2un socket SCTP sortant, orienté messages
QNetworkProxyQuery::TcpServer100un serveur TCP qui écoute les connexions entrantes provenant du réseau
QNetworkProxyQuery::UrlRequest101une requête plus complexe impliquant le chargement d’une URL
QNetworkProxyQuery::SctpServer102un serveur SCTP qui écoute les connexions entrantes provenant du réseau

Voir également queryType() et setQueryType().

Documentation des fonctions membres

QNetworkProxyQuery::QNetworkProxyQuery()

Crée un objet `QNetworkProxyQuery` par défaut. Par défaut, le type de requête sera ` QNetworkProxyQuery::TcpSocket`.

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

Crée un objet `QNetworkProxyQuery` avec l'URL requestUrl et définit le type de requête sur ` queryType`.

Voir également protocolTag(), peerHostName() et peerPort().

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

Crée un objet `QNetworkProxyQuery` de type ` queryType ` et définit la balise de protocole sur ` protocolTag`. Ce constructeur est adapté aux requêtes de type ` QNetworkProxyQuery::TcpSocket `, car il définit le numéro de port local sur ` bindPort`.

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

Voir également localPort().

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

Crée un objet `QNetworkProxyQuery` de type ` queryType ` et définit l'identifiant de protocole sur ` protocolTag`. Ce constructeur est adapté aux requêtes de type « QNetworkProxyQuery::TcpSocket », car il définit le nom d'hôte du pair sur ` hostname ` et le numéro de port du pair sur ` port`.

QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkProxyQuery &other)

Crée un objet `QNetworkProxyQuery` qui est une copie de ` other`.

[noexcept] QNetworkProxyQuery::~QNetworkProxyQuery()

Supprime cet objet « QNetworkProxyQuery ».

int QNetworkProxyQuery::localPort() const

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

Voir également 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 la partie « hôte » de l’URL demandée.

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

int QNetworkProxyQuery::peerPort() const

Renvoie le numéro de port de la requête sortante ou -1 si ce numéro 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 renseignent le numéro de port à partir de leurs valeurs par défaut.

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

QString QNetworkProxyQuery::protocolTag() const

Renvoie la balise de protocole associée à cet objet QNetworkProxyQuery, ou un objet QString vide si la balise de protocole est inconnue.

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

Voir également 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 le socket souhaite utiliser localement pour accepter les paquets entrants provenant de serveurs distants vers port. Le port local est le plus souvent utilisé avec les types de requête « QNetworkProxyQuery::TcpServer » et « QNetworkProxyQuery::UdpSocket ».

Les valeurs valides vont de 0 à 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 sans objet.

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

Voir également localPort(), setPeerPort() et setPeerHostName().

void QNetworkProxyQuery::setPeerHostName(const QString &hostname)

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

Le nom d’hôte du pair 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 demandé pour la connexion sortante vers port. Les valeurs valides vont de 1 à 65535, ou -1 pour indiquer que le numéro de port distant est inconnu.

Le numéro de port du pair 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 l'identifiant de protocole de cet objet ` QNetworkProxyQuery ` sur « protocolTag ».

La balise de protocole est une chaîne de caractères arbitraire qui indique quel protocole est utilisé sur le socket, par exemple « http », « xmpp », « telnet », etc. La balise de protocole est utilisée par le backend pour renvoyer une requête plus adaptée au protocole en question : par exemple, une connexion HTTP pourrait utiliser un serveur proxy HTTP avec mise en cache, tandis que toutes les autres connexions utiliseraient un serveur proxy SOCKSv5 plus performant.

Voir également protocolTag().

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

Définit le type de requête de cet objet sur « type ».

Voir également queryType().

void QNetworkProxyQuery::setUrl(const QUrl &url)

Définit le composant URL de cet objet QNetworkProxyQuery sur url. La définition de l'URL définit également la balise de protocole, le nom d'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 également url(), peerHostName() et peerPort().

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

Remplace cette instance de requête proxy du réseau par other. Cette opération est très rapide et ne rencontre jamais d'échec.

QUrl QNetworkProxyQuery::url() const

Renvoie la partie URL de cet objet QNetworkProxyQuery en cas de requête de type QNetworkProxyQuery::UrlRequest.

Voir aussi setUrl().

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

Renvoie « true » si cet 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 cet 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.