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 |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QNetworkProxyQuery ist Teil von Implicitly Shared Classes.
Ö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.
Abfragetyp | Beschreibung |
---|---|
TcpSocket | Normale 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. |
UdpSocket | Datagrammbasierte 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. |
SctpSocket | Nachrichtenorientierte 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. |
TcpServer | Passive 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. |
UrlRequest | Eine 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. |
SctpServer | Passive 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.
Konstante | Wert | Beschreibung |
---|---|---|
QNetworkProxyQuery::TcpSocket | 0 | ein normaler, ausgehender TCP-Socket |
QNetworkProxyQuery::UdpSocket | 1 | ein datagrammbasierter UDP-Socket, der an mehrere Ziele senden kann |
QNetworkProxyQuery::SctpSocket | 2 | ein nachrichtenorientierter, ausgehender SCTP-Socket |
QNetworkProxyQuery::TcpServer | 100 | ein TCP-Server, der auf eingehende Verbindungen aus dem Netz wartet |
QNetworkProxyQuery::UrlRequest | 101 | eine komplexere Anfrage, die das Laden einer URL beinhaltet |
QNetworkProxyQuery::SctpServer | 102 | ein 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.