QNetworkProxyQuery 类

QNetworkProxyQuery 类用于查询套接字的代理设置。 更多信息...

头文件 #include <QNetworkProxyQuery>
CMakefind_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmakeQT += network

公开类型

枚举QueryType { TcpSocket, UdpSocket, SctpSocket, TcpServer, UrlRequest, SctpServer }

公开函数

QNetworkProxyQuery()
QNetworkProxyQuery(const QUrl &requestUrl, QNetworkProxyQuery::QueryType queryType = UrlRequest)
QNetworkProxyQuery(const QString &hostname, int port, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType queryType = TcpSocket)
QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType queryType = TcpServer)
QNetworkProxyQuery(const QNetworkProxyQuery &other)
~QNetworkProxyQuery()
intlocalPort() const
QStringpeerHostName() const
intpeerPort() const
QStringprotocolTag() const
QNetworkProxyQuery::QueryTypequeryType() const
voidsetLocalPort(int port)
voidsetPeerHostName(const QString &hostname)
voidsetPeerPort(int port)
voidsetProtocolTag(const QString &protocolTag)
voidsetQueryType(QNetworkProxyQuery::QueryType type)
voidsetUrl(const QUrl &url)
voidswap(QNetworkProxyQuery &other)
QUrlurl() const
booloperator!=(const QNetworkProxyQuery &other) const
QNetworkProxyQuery &operator=(const QNetworkProxyQuery &other)
booloperator==(const QNetworkProxyQuery &other) const

详细描述

QNetworkProxyQuery 存储正在创建的套接字或正在发出的请求的详细信息。它由 QNetworkProxyQNetworkProxyFactory 使用,使应用程序能够更细粒度地控制使用哪些代理服务器,具体取决于查询的详细信息。这允许应用程序根据协议或目的地主机名等应用不同的设置。

QNetworkProxyQuery支持以下标准来选择代理:

  • 查询类型
  • 要使用的本地端口号
  • 目标主机名
  • 目标端口号
  • 协议名称,例如"http"或"ftp"
  • 请求的URL

在出站连接套接字的情况下,目标主机名是连接中的主机。它是传递给QTcpSocket::connectToHost()的hostName参数或QNetworkRequest请求中的主机组件。

在出站套接字的情况下,目标端口号是要连接的请求端口,而本地端口号是套接字在尝试外部连接之前希望在本地上使用的端口。在大多数情况下,本地端口号只由监听套接字(QTcpSocket)或数据报套接字(QUdpSocket)使用。

协议名称是一个任意的字符串,指示正在尝试的连接类型。例如,它可以匹配URL的方案,如"http"、"https"和"ftp"。在大多数情况下,代理选择不会根据协议改变,但此信息提供在更好的选择可以做出的情况下,例如选择缓存HTTP代理用于基于HTTP的连接,但对于所有其他连接选择更强大的SOCKSv5代理。

某些标准可能在某些类型的查询中可能没有意义。以下表格列出了按查询类型最常用的标准。

查询类型描述
TcpSocket请求连接到远程服务器的普通套接字,例如QTcpSocket。对等主机名和对等端口号匹配传递给QTcpSocket::connectToHost()的值。本地端口号通常为-1,表示套接字在哪个端口使用上没有偏好。URL组件不使用。
UdpSocket基于数据报的套接字,可以同时发送和接收。本地端口、远程主机或远程端口字段都可以使用或不用,具体取决于套接字的特点。URL组件不使用。
SctpSocket请求连接到远程服务器的面向消息的套接字。对等主机名和对等端口号匹配传递给QSctpSocket::connectToHost()的值。本地端口号通常为-1,表示套接字在哪个端口使用上没有偏好。URL组件不使用。
TcpServer监听端口并等待网络传入连接的被动服务器套接字。通常,仅使用本地端口号,但在特定情况下(例如,指示从中期望连接的远程主机)可以使用远程地址。URL组件不使用。
UrlRequest更高级的请求,例如来自QNetworkAccessManager的请求。这些请求必然会使用出站TCP套接字,但此查询类型提供以表示URL组件中存在更详细的信息。为了便于实现,设置URL的主机和端口号为目标地址。
SctpServer监听SCTP端口并等待网络传入连接的被动服务器套接字。通常,仅使用本地端口号,但在特定情况下(例如,指示从中期望连接的远程主机)可以使用远程地址。URL组件不使用。

请注意,任何标准都可能缺失或未知(主机名或协议名的空 QString,端口号为 -1)。如果出现这种情况,执行查询的函数应尽可能猜测或应用某些实现定义的默认值。

参阅QNetworkProxyQNetworkProxyFactoryQNetworkAccessManagerQAbstractSocket::setProxy

成员类型文档

enum QNetworkProxyQuery::QueryType

描述一个 QNetworkProxyQuery 查询的类型。

常数描述
QNetworkProxyQuery::TcpSocket0一个正常的、外出的 TCP 套接字
QNetworkProxyQuery::UdpSocket1基于数据报的 UDP 套接字,可发送到多个目标
QNetworkProxyQuery::SctpSocket2一个面向消息的、外出的 SCTP 套接字
QNetworkProxyQuery::TcpServer100一个监听来自网络的传入连接的 TCP 服务器
QNetworkProxyQuery::UrlRequest101一个更复杂的请求,涉及加载 URL
QNetworkProxyQuery::SctpServer102一个监听来自网络的传入连接的 SCTP 服务器

参见queryType() 和 setQueryType

成员函数文档

QNetworkProxyQuery::QNetworkProxyQuery()

构建一个默认的 QNetworkProxyQuery 对象。默认情况下,查询类型将为 QNetworkProxyQuery::TcpSocket

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

构建一个具有 URL requestUrl 的 QNetworkProxyQuery 并将查询类型设置为 queryType

参见protocolTagpeerHostNamepeerPort

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

构建一个类型为 queryType 的 QNetworkProxyQuery 并设置协议标记为 protocolTag。此构造函数适合 QNetworkProxyQuery::TcpSocket 查询,因为它将同伴主机名设置为 hostname 并且将同伴的端口号设置为 port

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

构建一个类型为 queryType 的 QNetworkProxyQuery 并设置协议标记为 protocolTag。此构造函数适合 QNetworkProxyQuery::TcpSocket 查询因为将它设置为本地端口号 bindPort

请注意,bindPort 是 quint16 类型以指明请求的确切端口号。在此上下文中不允许使用 -1(未知)的值。

也请参阅 localPort

QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkProxyQuery &other)

构造一个QNetworkProxyQuery对象,它是other的副本。

[noexcept]QNetworkProxyQuery::~QNetworkProxyQuery()

销毁这个QNetworkProxyQuery对象。

int QNetworkProxyQuery::localPort() const

返回将接受来自远程服务器的输入数据包的套接字端口号,如果端口号未知则返回-1。

也请参阅 peerPortpeerHostNamesetLocalPort

QString QNetworkProxyQuery::peerHostName() const

返回请求的出站连接的主机名或IP地址,如果远程主机名未知则返回空字符串。

如果查询类型是QNetworkProxyQuery::UrlRequest,此函数返回请求的URL的主机部分。

也请参阅 peerPortlocalPortsetPeerHostName

int QNetworkProxyQuery::peerPort() const

返回出站请求的端口号,如果端口号未知则返回-1。

如果查询类型为QNetworkProxyQuery::UrlRequest,此函数返回请求URL的端口号。通常情况下,框架将从它们的默认值中填充端口号。

也请参阅 peerHostNamelocalPortsetPeerPort

QString QNetworkProxyQuery::protocolTag() const

返回此QNetworkProxyQuery对象的协议标记,如果协议标记未知则返回空

QString

对于类型为QNetworkProxyQuery::UrlRequest的查询,此函数返回URL方案组件的值。

也请参阅 setProtocolTagurl

QNetworkProxyQuery::QueryType QNetworkProxyQuery::queryType() const

返回查询类型。

也请参阅 setQueryType

void QNetworkProxyQuery::setLocalPort(int port)

将套接字局部端口号设置为port,用于本地接收来自远程服务器的请求数据包。本地端口通常与QNetworkProxyQuery::TcpServerQNetworkProxyQuery::UdpSocket查询类型一起使用。

有效值是0到65535(当0表示任何端口号都受接受时),或-1,指本地端口号未知或不适用。

在某些情况下,对于特殊协议,本地端口号也可以与类型为QNetworkProxyQuery::TcpSocket的查询一起使用。当这种情况发生时,套接字表示在连接到远程主机时希望使用端口号端口号

另请参阅localPort(),setPeerPort()和setPeerHostName()。

void QNetworkProxyQuery::setPeerHostName(const QString &hostname)

将请求的出站连接的主机名设置为主机名。可以使用空的主机名来表示远程主机未知。

对于QNetworkProxyQuery::UdpSocketQNetworkProxyQuery::TcpServer查询类型,也可以使用对等主机名来指示入站连接预期的源地址。

另请参阅peerHostName(),setPeerPort()和setLocalPort()。

void QNetworkProxyQuery::setPeerPort(int port)

将请求的出站连接的端口号设置为端口号。有效值是1到65535,或-1表示远程端口号未知。

对于QNetworkProxyQuery::UdpSocketQNetworkProxyQuery::TcpServer查询类型,也可以使用对等端口号来指示入站连接预期的端口号。

另请参阅peerPort(),setPeerHostName()和setLocalPort()。

void QNetworkProxyQuery::setProtocolTag(const QString &protocolTag)

将此QNetworkProxyQuery对象的消息协议标志设置为协议标志

协议标志是一个任意字符串,表示通过套接字正在使用的协议,例如"http"、"xmpp"、"telnet"等。后端使用协议标志返回更具体于所涉协议的请求:例如,HTTP连接可以使用缓存HTTP代理服务器,而所有其他连接则使用功能更强大的SOCKSv5代理服务器。

另请参阅protocolTag()。

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

将此对象的查询类型设置为类型

另请参阅queryType()。

void QNetworkProxyQuery::setUrl(const QUrl &url)

将此QNetworkProxyQuery对象的URL组件设置为url。设置URL还将设置协议标志、远程主机名和端口号。这样做是为了方便实现确定要使用的代理服务器的代码。

另请参阅 url()、peerHostName() 和 peerPort()。

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

与此网络代理查询实例交换 other。此函数执行很快且从不失败。

QUrl QNetworkProxyQuery::url() const

当查询类型为 QNetworkProxyQuery::UrlRequest 时,返回此 QNetworkProxyQuery 对象的 URL 成分。

另请参阅 setUrl()。

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

如果此 QNetworkProxyQuery 对象不包含与 other 相同的数据,则返回 true

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

复制 other 的内容。

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

如果此 QNetworkProxyQuery 对象包含与 other 相同的数据,则返回 true

© 2024 Qt 公司有限公司。此文档中的贡献是各自所有者的版权。提供的文档根据自由软件基金会的出版物《GNU 自由文档许可证版本 1.3》的条款进行许可。Qt 及其相关标志是芬兰的 Qt 公司及其在世界上其他国家的商标。所有其他商标均为其各自所有者的财产。