QNetworkProxyQuery Class

Die Klasse QNetworkProxyQuery wird verwendet, um die Proxy-Einstellungen für einen Socket abzufragen. Mehr...

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

Öffentliche Typen

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

Öffentliche Funktionen

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

Detaillierte Beschreibung

QNetworkProxyQuery enthält die Details eines Sockets, der erstellt oder angefordert wurde. Sie wird von QNetworkProxy und QNetworkProxyFactory verwendet, um Anwendungen eine feinere Kontrolle darüber zu ermöglichen, welche Proxy-Server in Abhängigkeit von den Details der Anfrage verwendet werden. Dies ermöglicht es einer Anwendung, unterschiedliche Einstellungen vorzunehmen, z. B. je nach Protokoll oder Zielhostname.

QNetworkProxyQuery unterstützt die folgenden Kriterien für die Auswahl des Proxys:

  • die Art der Abfrage
  • die zu verwendende lokale Portnummer
  • der Name des Zielhosts
  • die Nummer des Ziel-Ports
  • der Protokollname, wie z.B. "http" oder "ftp"
  • die angeforderte URL

Der Ziel-Hostname ist der Host in der Verbindung im Falle von ausgehenden Verbindungs-Sockets. Es handelt sich um den Parameter hostName, der an QTcpSocket::connectToHost() übergeben wird, oder um die Host-Komponente einer mit QNetworkRequest angeforderten URL.

Die Nummer des Ziel-Ports ist der angeforderte Port, zu dem eine Verbindung hergestellt werden soll, wenn es sich um ausgehende Sockets handelt, während die Nummer des lokalen Ports der Port ist, den der Socket lokal verwenden möchte, bevor er versucht, die externe Verbindung herzustellen. In den meisten Fällen wird die lokale Portnummer nur von abhörenden Sockets (QTcpSocket) oder von Datagramm-Sockets (QUdpSocket) verwendet.

Der Protokollname ist eine beliebige Zeichenkette, die die Art der angestrebten Verbindung angibt. Er kann zum Beispiel dem Schema einer URL entsprechen, wie "http", "https" und "ftp". In den meisten Fällen ändert sich die Proxy-Auswahl nicht in Abhängigkeit vom Protokoll, aber diese Information wird bereitgestellt, falls eine bessere Wahl getroffen werden kann, z. B. die Wahl eines HTTP-Caching-Proxys für HTTP-basierte Verbindungen, aber eines leistungsfähigeren SOCKSv5-Proxys für alle anderen.

Einige der Kriterien sind möglicherweise nicht für alle Arten von Abfragen sinnvoll. In der folgenden Tabelle sind die Kriterien aufgeführt, die je nach Art der Abfrage am häufigsten verwendet werden.

AbfragetypBeschreibung
TcpSocketNormale Sockets, die eine Verbindung zu einem entfernten Server anfordern, wie QTcpSocket. Der Peer-Hostname und der Peer-Port entsprechen den Werten, die an QTcpSocket::connectToHost() übergeben wurden. Der lokale Port ist normalerweise -1, was anzeigt, dass der Socket keine Präferenz hat, welcher Port verwendet werden soll. Die URL-Komponente wird nicht verwendet.
UdpSocketDatagrammbasierte Sockets, die sowohl senden als auch empfangen können. Die Felder local port, remote host oder remote port können je nach den Eigenschaften des Sockets verwendet oder unbenutzt gelassen werden. Die URL-Komponente wird nicht verwendet.
SctpSocketNachrichtenorientierte Sockets, die eine Verbindung zu einem entfernten Server anfordern. Der Hostname der Gegenstelle und der Port der Gegenstelle entsprechen den Werten, die an QSctpSocket::connectToHost() übergeben wurden. Der lokale Port ist normalerweise -1, was anzeigt, dass der Socket keine Präferenz hat, welcher Port verwendet werden soll. Die URL-Komponente wird nicht verwendet.
TcpServerPassive Server-Sockets, die an einem Port lauschen und auf eingehende Verbindungen aus dem Netz warten. Normalerweise wird nur der lokale Port verwendet, aber die entfernte Adresse kann unter bestimmten Umständen verwendet werden, zum Beispiel um anzugeben, von welchem entfernten Host eine Verbindung erwartet wird. Die URL-Komponente wird nicht verwendet.
UrlRequestEine Anfrage auf höherer Ebene, z. B. von QNetworkAccessManager. Diese Anfragen verwenden zwangsläufig einen ausgehenden TCP-Socket, aber dieser Abfragetyp wird bereitgestellt, um anzuzeigen, dass in der URL-Komponente detailliertere Informationen enthalten sind. Um die Implementierung zu vereinfachen, werden der Host und der Port der URL als Zieladresse festgelegt.
SctpServerPassive Server-Sockets, die an einem SCTP-Port lauschen und auf eingehende Verbindungen aus dem Netz warten. Normalerweise wird nur der lokale Port verwendet, aber die entfernte Adresse kann unter bestimmten Umständen verwendet werden, zum Beispiel um anzugeben, von welchem entfernten Host eine Verbindung erwartet wird. Die URL-Komponente wird nicht verwendet.

Es ist zu beachten, dass eines der Kriterien fehlen oder unbekannt sein kann (ein leeres QString für den Hostnamen oder Protokollnamen, -1 für die Portnummern). In diesem Fall sollten die Funktionen, die die Abfrage ausführen, ihre beste Vermutung anstellen oder einige implementierungsdefinierte Standardwerte anwenden.

Siehe auch QNetworkProxy, QNetworkProxyFactory, QNetworkAccessManager, und QAbstractSocket::setProxy().

Dokumentation der Mitgliedstypen

enum QNetworkProxyQuery::QueryType

Beschreibt den Typ einer QNetworkProxyQuery Abfrage.

KonstanteWertBeschreibung
QNetworkProxyQuery::TcpSocket0ein normaler, ausgehender TCP-Socket
QNetworkProxyQuery::UdpSocket1ein datagrammbasierter UDP-Socket, der an mehrere Ziele senden kann
QNetworkProxyQuery::SctpSocket2ein nachrichtenorientierter, ausgehender SCTP-Socket
QNetworkProxyQuery::TcpServer100ein TCP-Server, der auf eingehende Verbindungen aus dem Netz wartet
QNetworkProxyQuery::UrlRequest101eine komplexere Anfrage, die das Laden einer URL beinhaltet
QNetworkProxyQuery::SctpServer102ein SCTP-Server, der auf eingehende Verbindungen aus dem Netz wartet

Siehe auch queryType() und setQueryType().

Dokumentation der Mitgliedsfunktionen

QNetworkProxyQuery::QNetworkProxyQuery()

Konstruiert ein Standard QNetworkProxyQuery Objekt. Standardmäßig wird der Abfragetyp QNetworkProxyQuery::TcpSocket verwendet.

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

Konstruiert eine QNetworkProxyQuery mit der URL requestUrl und setzt den Abfragetyp auf queryType.

Siehe auch protocolTag(), peerHostName(), und peerPort().

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

Konstruiert eine QNetworkProxyQuery vom Typ queryType und setzt das Protokoll-Tag auf protocolTag. Dieser Konstruktor ist für QNetworkProxyQuery::TcpSocket Abfragen geeignet, da er die lokale Portnummer auf bindPort setzt.

Beachten Sie, dass bindPort vom Typ quint16 ist, um die genaue Portnummer anzugeben, die angefordert wird. Der Wert -1 (unbekannt) ist in diesem Zusammenhang nicht zulässig.

Siehe auch localPort().

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

Konstruiert eine QNetworkProxyQuery vom Typ queryType und setzt das Protokoll-Tag auf protocolTag. Dieser Konstruktor ist für QNetworkProxyQuery::TcpSocket Abfragen geeignet, da er den Hostnamen der Gegenstelle auf hostname und die Portnummer der Gegenstelle auf port setzt.

QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkProxyQuery &other)

Konstruiert ein QNetworkProxyQuery-Objekt, das eine Kopie von other ist.

[noexcept] QNetworkProxyQuery::~QNetworkProxyQuery()

Zerstört dieses QNetworkProxyQuery Objekt.

int QNetworkProxyQuery::localPort() const

Gibt die Portnummer des Sockets zurück, der eingehende Pakete von entfernten Servern annimmt, oder -1, wenn der Port nicht bekannt ist.

Siehe auch peerPort(), peerHostName(), und setLocalPort().

QString QNetworkProxyQuery::peerHostName() const

Gibt den Hostnamen oder die IP-Adresse der angefragten ausgehenden Verbindung zurück oder eine leere Zeichenkette, wenn der Remote-Hostname nicht bekannt ist.

Wenn der Abfragetyp QNetworkProxyQuery::UrlRequest ist, gibt diese Funktion die Hostkomponente der angefragten URL zurück.

Siehe auch peerPort(), localPort(), und setPeerHostName().

int QNetworkProxyQuery::peerPort() const

Gibt die Portnummer für die ausgehende Anfrage zurück oder -1, wenn die Portnummer nicht bekannt ist.

Wenn der Abfragetyp QNetworkProxyQuery::UrlRequest ist, gibt diese Funktion die Portnummer der angefragten URL zurück. Im Allgemeinen füllen Frameworks die Portnummer mit ihren Standardwerten aus.

Siehe auch peerHostName(), localPort(), und setPeerPort().

QString QNetworkProxyQuery::protocolTag() const

Gibt das Protokoll-Tag für dieses QNetworkProxyQuery Objekt zurück, oder ein leeres QString, falls das Protokoll-Tag unbekannt ist.

Im Falle von Abfragen des Typs QNetworkProxyQuery::UrlRequest gibt diese Funktion den Wert der Schema-Komponente der URL zurück.

Siehe auch setProtocolTag() und url().

QNetworkProxyQuery::QueryType QNetworkProxyQuery::queryType() const

Gibt den Abfragetyp zurück.

Siehe auch setQueryType().

void QNetworkProxyQuery::setLocalPort(int port)

Legt die Portnummer fest, die der Socket lokal verwenden möchte, um eingehende Pakete von entfernten Servern an port anzunehmen. Der lokale Port wird am häufigsten mit den Abfragetypen QNetworkProxyQuery::TcpServer und QNetworkProxyQuery::UdpSocket verwendet.

Gültige Werte sind 0 bis 65535 (wobei 0 anzeigt, dass jede Portnummer akzeptiert wird) oder -1, was bedeutet, dass die lokale Portnummer unbekannt oder nicht anwendbar ist.

Unter bestimmten Umständen, bei speziellen Protokollen, kann die lokale Portnummer auch mit einer Abfrage des Typs QNetworkProxyQuery::TcpSocket verwendet werden. In diesem Fall zeigt der Socket an, dass er die Portnummer port verwenden möchte, wenn er sich mit einem entfernten Host verbindet.

Siehe auch localPort(), setPeerPort(), und setPeerHostName().

void QNetworkProxyQuery::setPeerHostName(const QString &hostname)

Setzt den Hostnamen der angeforderten ausgehenden Verbindung auf hostname. Ein leerer Hostname kann verwendet werden, um anzuzeigen, dass der entfernte Host unbekannt ist.

Der Peer-Hostname kann auch verwendet werden, um die erwartete Quelladresse einer eingehenden Verbindung im Falle der Abfragetypen QNetworkProxyQuery::UdpSocket oder QNetworkProxyQuery::TcpServer anzugeben.

Siehe auch peerHostName(), setPeerPort(), und setLocalPort().

void QNetworkProxyQuery::setPeerPort(int port)

Legt die angeforderte Anschlussnummer für die ausgehende Verbindung auf port fest. Gültige Werte sind 1 bis 65535 oder -1, um anzugeben, dass die Nummer des entfernten Anschlusses unbekannt ist.

Die Portnummer der Gegenstelle kann auch verwendet werden, um die erwartete Portnummer einer eingehenden Verbindung im Falle der Abfragetypen QNetworkProxyQuery::UdpSocket oder QNetworkProxyQuery::TcpServer anzugeben.

Siehe auch peerPort(), setPeerHostName(), und setLocalPort().

void QNetworkProxyQuery::setProtocolTag(const QString &protocolTag)

Setzt das Protokoll-Tag für dieses QNetworkProxyQuery Objekt auf protocolTag.

Das Protokoll-Tag ist eine beliebige Zeichenkette, die angibt, welches Protokoll über den Socket gesprochen wird, wie z.B. "http", "xmpp", "telnet", usw. Das Protokoll-Tag wird vom Backend verwendet, um eine Anfrage zurückzugeben, die spezifischer für das betreffende Protokoll ist: Eine HTTP-Verbindung könnte zum Beispiel einen HTTP-Proxy-Server mit Zwischenspeicher verwenden, während alle anderen Verbindungen einen leistungsfähigeren SOCKSv5-Proxy-Server verwenden.

Siehe auch protocolTag().

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

Setzt den Abfragetyp dieses Objekts auf type.

Siehe auch queryType().

void QNetworkProxyQuery::setUrl(const QUrl &url)

Setzt die URL-Komponente dieses QNetworkProxyQuery -Objekts auf url. Durch das Setzen der URL werden auch das Protokoll-Tag, der Name des entfernten Hosts und die Portnummer festgelegt. Dies geschieht, um die Implementierung des Codes zu erleichtern, der den zu verwendenden Proxy-Server bestimmt.

Siehe auch url(), peerHostName(), und peerPort().

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

Tauscht diese Netzwerk-Proxy-Abfrageinstanz mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.

QUrl QNetworkProxyQuery::url() const

Gibt die URL-Komponente dieses QNetworkProxyQuery -Objekts im Falle einer Abfrage vom Typ QNetworkProxyQuery::UrlRequest zurück.

Siehe auch setUrl().

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

Gibt true zurück, wenn dieses QNetworkProxyQuery Objekt nicht die gleichen Daten wie other enthält.

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

Kopiert den Inhalt von other.

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

Gibt true zurück, wenn dieses QNetworkProxyQuery Objekt die gleichen Daten wie other enthält.

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