QNetworkProxyQuery Class
Die Klasse „QNetworkProxyQuery“ dient dazu, die Proxy-Einstellungen für einen Socket abzufragen. Mehr...
| Header: | #include <QNetworkProxyQuery> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QNetworkProxyQuery gehört zu den implizit gemeinsam genutzten Klassen.
Ö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 |
Ausführliche Beschreibung
QNetworkProxyQuery enthält die Details eines Sockets, der gerade erstellt wird, oder einer Anfrage, die gerade gestellt wird. Es wird von QNetworkProxy und QNetworkProxyFactory verwendet, um Anwendungen eine feinere Steuerung darüber zu ermöglichen, welche Proxy-Server je nach den Details der Anfrage verwendet werden. Dadurch kann eine Anwendung unterschiedliche Einstellungen anwenden, beispielsweise je nach Protokoll oder Ziel-Hostnamen.
QNetworkProxyQuery unterstützt die folgenden Kriterien für die Auswahl des Proxys:
- den Abfragetyp
- die zu verwendende lokale Portnummer
- den Zielhostnamen
- die Zielportnummer
- den Protokollnamen, z. B. „http“ oder „ftp“
- die angeforderte URL
Der Zielhostname ist bei ausgehenden Verbindungs-Sockets der Host in der Verbindung. Es handelt sich um den Parameter „ hostName “, der an „ QTcpSocket::connectToHost()“ übergeben wird, oder um die Host-Komponente einer URL, die mit „ QNetworkRequest “ angefordert wird.
Die Zielportnummer ist bei ausgehenden Sockets der Port, zu dem eine Verbindung hergestellt werden soll, während die lokale Portnummer der Port ist, den der Socket lokal verwenden möchte, bevor er die externe Verbindung herstellt. In den meisten Fällen wird die lokale Portnummer nur von Listening-Sockets (`QTcpSocket`) oder von Datagramm-Sockets (`QUdpSocket`) verwendet.
Der Protokollname ist eine beliebige Zeichenfolge, die den Typ der angestrebten Verbindung angibt. Er kann beispielsweise mit dem Schema einer URL übereinstimmen, wie „http“, „https“ und „ftp“. In den meisten Fällen ändert sich die Proxy-Auswahl nicht je nach Protokoll, doch diese Information wird bereitgestellt, falls eine bessere Wahl getroffen werden kann – beispielsweise die Auswahl eines cachingfähigen HTTP-Proxys für HTTP-basierte Verbindungen, aber eines leistungsstärkeren SOCKSv5-Proxys für alle anderen.
Einige der Kriterien sind möglicherweise nicht bei allen Abfragetypen sinnvoll. Die folgende Tabelle listet die Kriterien auf, die je nach Abfragetyp am häufigsten verwendet werden.
| Abfragetyp | Beschreibung |
|---|---|
| TcpSocket | Normale Sockets, die eine Verbindung zu einem Remote-Server anfordern, wie z. B. QTcpSocket. Der Peer-Hostname und der Peer-Port stimmen mit den an QTcpSocket::connectToHost() übergebenen Werten überein. Der lokale Port ist in der Regel -1, was bedeutet, dass der Socket keine Präferenz hinsichtlich des zu verwendenden Ports hat. Die URL-Komponente wird nicht verwendet. |
| UdpSocket | Datagramm-basierte Sockets, die sowohl senden als auch empfangen können. Die Felder für den lokalen Port, den Remote-Host oder den Remote-Port können je nach den Eigenschaften des Sockets verwendet oder ungenutzt bleiben. Die URL-Komponente wird nicht verwendet. |
| SctpSocket | Nachrichtenorientierte Sockets, die eine Verbindung zu einem Remote-Server anfordern. Der Peer-Hostname und der Peer-Port stimmen mit den an ` QSctpSocket::connectToHost()` übergebenen Werten überein. Der lokale Port ist in der Regel -1, was bedeutet, dass der Socket keine Präferenz hinsichtlich des zu verwendenden Ports hat. Die URL-Komponente wird nicht verwendet. |
| TcpServer | Passive Server-Sockets, die auf einem Port lauschen und auf eingehende Verbindungen aus dem Netzwerk warten. Normalerweise wird nur der lokale Port verwendet, aber die Remote-Adresse könnte unter bestimmten Umständen verwendet werden, beispielsweise um anzugeben, von welchem Remote-Host eine Verbindung erwartet wird. Die URL-Komponente wird nicht verwendet. |
| UrlRequest | Eine übergeordnete Anfrage, wie sie beispielsweise von QNetworkAccessManager stammt. Diese Anfragen verwenden zwangsläufig einen ausgehenden TCP-Socket, doch dieser Abfragetyp dient dazu, anzuzeigen, dass detailliertere Informationen in der URL-Komponente enthalten sind. Zur Vereinfachung der Implementierung werden der Host und der Port der URL als Zieladresse festgelegt. |
| SctpServer | Passive Server-Sockets, die auf einem SCTP-Port lauschen und auf eingehende Verbindungen aus dem Netzwerk warten. Normalerweise wird nur der lokale Port verwendet, doch unter bestimmten Umständen kann auch die Remote-Adresse verwendet werden, beispielsweise um anzugeben, von welchem Remote-Host eine Verbindung erwartet wird. Die URL-Komponente wird nicht verwendet. |
Es ist zu beachten, dass jedes der Kriterien fehlen oder unbekannt sein kann (ein leeres „ QString “ für den Hostnamen oder den Protokollnamen, -1 für die Portnummern). In diesem Fall sollten die Funktionen, die die Abfrage ausführen, eine bestmögliche Schätzung vornehmen oder implementierungsabhängige Standardwerte anwenden.
Siehe auch QNetworkProxy, QNetworkProxyFactory, QNetworkAccessManager und QAbstractSocket::setProxy().
Dokumentation zu Mitgliedstypen
enum QNetworkProxyQuery::QueryType
Beschreibt den Typ einer „ QNetworkProxyQuery “-Abfrage.
| Konstante | Wert | Beschreibung |
|---|---|---|
QNetworkProxyQuery::TcpSocket | 0 | ein normaler, ausgehender TCP-Socket |
QNetworkProxyQuery::UdpSocket | 1 | ein datagrammbasierter UDP-Socket, der an mehrere Ziele senden könnte |
QNetworkProxyQuery::SctpSocket | 2 | ein nachrichtenorientierter, ausgehender SCTP-Socket |
QNetworkProxyQuery::TcpServer | 100 | ein TCP-Server, der auf eingehende Verbindungen aus dem Netzwerk wartet |
QNetworkProxyQuery::UrlRequest | 101 | eine komplexere Anfrage, bei der eine URL geladen wird |
QNetworkProxyQuery::SctpServer | 102 | einen SCTP-Server, der auf eingehende Verbindungen aus dem Netzwerk wartet |
Siehe auch queryType() und setQueryType().
Dokumentation zu den Member-Funktionen
QNetworkProxyQuery::QNetworkProxyQuery()
Erstellt ein QNetworkProxyQuery-Objekt mit Standardwerten. Standardmäßig ist der Abfragetyp „ QNetworkProxyQuery::TcpSocket “.
[explicit] QNetworkProxyQuery::QNetworkProxyQuery(const QUrl &requestUrl, QNetworkProxyQuery::QueryType queryType = UrlRequest)
Erstellt einen QNetworkProxyQuery mit der URL requestUrl und legt den Abfragetyp auf „ queryType “ fest.
Siehe auch protocolTag(), peerHostName() und peerPort().
[explicit] QNetworkProxyQuery::QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType queryType = TcpServer)
Erstellt eine `QNetworkProxyQuery` vom Typ ` queryType ` und setzt das Protokoll-Tag auf ` protocolTag`. Dieser Konstruktor eignet sich für ` QNetworkProxyQuery::TcpSocket `-Abfragen, 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)
Erstellt ein `QNetworkProxyQuery` vom Typ ` queryType ` und setzt das Protokoll-Tag auf ` protocolTag`. Dieser Konstruktor eignet sich für Abfragen nach ` QNetworkProxyQuery::TcpSocket `, da er den Hostnamen des Peers auf ` hostname ` und die Portnummer des Peers auf ` port` setzt.
QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkProxyQuery &other)
Erstellt ein `QNetworkProxyQuery`-Objekt, das eine Kopie von ` other` ist.
[noexcept] QNetworkProxyQuery::~QNetworkProxyQuery()
Löscht dieses „ QNetworkProxyQuery “-Objekt.
int QNetworkProxyQuery::localPort() const
Gibt die Portnummer des Sockets zurück, der eingehende Pakete von Remote-Servern entgegennimmt, 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 angeforderten ausgehenden Verbindung zurück oder eine leere Zeichenfolge, falls der Name des Remote-Hosts nicht bekannt ist.
Wenn der Abfragetyp „ QNetworkProxyQuery::UrlRequest “ ist, gibt diese Funktion die Host-Komponente der angeforderten 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, falls die Portnummer nicht bekannt ist.
Wenn der Abfragetyp „ QNetworkProxyQuery::UrlRequest “ ist, gibt diese Funktion die Portnummer der angeforderten 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.
Bei Abfragen vom Typ „ QNetworkProxyQuery::UrlRequest “ gibt diese Funktion den Wert der „scheme“-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 Remote-Servern unter port anzunehmen. Der lokale Port wird am häufigsten bei den Abfragetypen „ QNetworkProxyQuery::TcpServer “ und „ QNetworkProxyQuery::UdpSocket “ verwendet.
Gültige Werte sind 0 bis 65535 (wobei 0 angibt, dass jede Portnummer akzeptiert wird) oder -1, was bedeutet, dass die lokale Portnummer unbekannt oder nicht anwendbar ist.
Unter bestimmten Umständen kann die lokale Portnummer bei speziellen Protokollen auch mit einer Abfrage vom Typ „ QNetworkProxyQuery::TcpSocket “ verwendet werden. In diesem Fall gibt der Socket an, dass er bei der Verbindung zu einem Remote-Host die Portnummer „ port “ verwenden möchte.
Siehe auch localPort(), setPeerPort() und setPeerHostName().
void QNetworkProxyQuery::setPeerHostName(const QString &hostname)
Legt den Hostnamen der angeforderten ausgehenden Verbindung auf „ hostname “ fest. Ein leerer Hostname kann verwendet werden, um anzugeben, dass der Remote-Host unbekannt ist.
Der Peer-Hostname kann bei den Abfragetypen „ QNetworkProxyQuery::UdpSocket “ oder „ QNetworkProxyQuery::TcpServer “ auch verwendet werden, um die erwartete Quelladresse einer eingehenden Verbindung anzugeben.
Siehe auch peerHostName(), setPeerPort() und setLocalPort().
void QNetworkProxyQuery::setPeerPort(int port)
Legt die angeforderte Portnummer für die ausgehende Verbindung auf port fest. Gültige Werte sind 1 bis 65535 oder -1, um anzugeben, dass die Remote-Portnummer unbekannt ist.
Die Peer-Portnummer kann bei den Abfragetypen „ QNetworkProxyQuery::UdpSocket “ oder „ QNetworkProxyQuery::TcpServer “ auch verwendet werden, um die erwartete Portnummer einer eingehenden Verbindung anzugeben.
Siehe auch „ peerPort()“, „ setPeerHostName()“ und „ setLocalPort()“.
void QNetworkProxyQuery::setProtocolTag(const QString &protocolTag)
Legt das Protokoll-Tag für dieses „ QNetworkProxyQuery “-Objekt auf „ protocolTag “ fest.
Das Protokoll-Tag ist eine beliebige Zeichenfolge, die angibt, welches Protokoll über den Socket genutzt wird, z. B. „http“, „xmpp“, „telnet“ usw. Das Protokoll-Tag wird vom Backend verwendet, um eine Anfrage zurückzugeben, die besser auf das jeweilige Protokoll zugeschnitten ist: So könnte beispielsweise eine HTTP-Verbindung einen HTTP-Proxy-Server mit Caching nutzen, während alle anderen Verbindungen einen leistungsstärkeren SOCKSv5-Proxy-Server verwenden.
Siehe auch protocolTag().
void QNetworkProxyQuery::setQueryType(QNetworkProxyQuery::QueryType type)
Legt den Abfragetyp dieses Objekts auf „ type “ fest.
Siehe auch „ queryType()“.
void QNetworkProxyQuery::setUrl(const QUrl &url)
Setzt die URL-Komponente dieses QNetworkProxyQuery -Objekts auf url. Durch das Festlegen der URL werden auch das Protokoll-Tag, der Name des Remote-Hosts und die Portnummer festgelegt. Dies geschieht, um die Implementierung des Codes zu vereinfachen, der den zu verwendenden Proxy-Server bestimmt.
Siehe auch „ url()“, „ peerHostName()“ und „ peerPort()“.
[noexcept] void QNetworkProxyQuery::swap(QNetworkProxyQuery &other)
Ersetzt diese Netzwerk-Proxy-Abfrageinstanz durch other. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.
QUrl QNetworkProxyQuery::url() const
Gibt die URL-Komponente dieses QNetworkProxyQuery -Objekts zurück, wenn eine Abfrage vom Typ QNetworkProxyQuery::UrlRequest vorliegt.
Siehe auch setUrl().
bool QNetworkProxyQuery::operator!=(const QNetworkProxyQuery &other) const
Gibt „ true “ zurück, wenn dieses „ QNetworkProxyQuery “-Objekt nicht dieselben Daten enthält wie „ other “.
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 dieselben Daten enthält wie „ 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.