class QNetworkProxyQuery#

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

简介#

方法

备注

此文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单的方式来通知我们。

详细说明

QNetworkProxyQuery 存储正在创建的套接字或发出的请求的详细信息。它被 QNetworkProxyQNetworkProxyFactory 使用,以允许应用程序根据查询的详细信息有更细粒度的控制权来选择代理服务器。这使得应用程序能够根据协议或目标主机名应用不同的设置,例如。

QNetworkProxyQuery 支持以下用于选择代理的标准:

  • 查询类型

  • 要使用的本地端口号

  • 目标主机名

  • 目标端口号

  • 协议名称,如“http”或“ftp”

  • 请求的URL

在出站连接套接字的情况下,目标主机名是连接中的主机。它是传递给 connectToHost()hostName 参数,或使用 QNetworkRequest 请求的URL的主机部分。

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

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

某些标准可能在所有查询类型中都不合理。以下表格按照查询类型列出了最常用的标准。

查询类型

描述

TcpSocket

请求连接到远程服务器的普通套接字,如 QTcpSocket。对端主机名和对端端口号与传递给 connectToHost() 的值匹配。本地端口通常是-1,表示套接字对于哪个端口使用没有偏好。URL组件没有被使用。

UdpSocket

基于数据报的套接字,既可以发送也可以接收。本地端口、远程主机的端口字段均可以使用或留空,这取决于套接字的特点。URL组件没有被使用。

SctpSocket

请求连接到远程服务器的消息导向套接字。对端主机名和对端端口号与传递给 connectToHost() 的值匹配。本地端口通常是-1,表示套接字对于哪个端口使用没有偏好。URL组件没有被使用。

TcpServer

被动式服务器套接字,监听端口并等待从网络传入的连接。通常,仅使用本地端口,但在特定情况下也可能使用远程地址,例如指明期望从哪个远程主机接收连接。URL组件不会被使用。

UrlRequest

更高级别的请求,例如来自QNetworkAccessManager。这些请求不可避免地会使用外出的TCP套接字,但此查询类型被提供以指示URL组件中存在更详细的信息。为了便于实现,URL的主机和端口被设置为目的地地址。

SctpServer

被动式服务器套接字,监听SCTP端口并等待从网络传入的连接。通常,仅使用本地端口,但在特定情况下也可能使用远程地址,例如指明期望从哪个远程主机接收连接。URL组件不会被使用。

需要注意的是,任何这些标准都可能缺失或不清楚(主机名或协议名称为空的QString,端口号为-1)。如果发生这种情况,执行查询的功能应尽最大努力猜测或应用某些实现定义的默认值。

class QueryType#

描述了一个QNetworkProxyQuery查询的类型。

常量

描述

QNetworkProxyQuery.TcpSocket

一个普通的、外出的TCP套接字

QNetworkProxyQuery.UdpSocket

一个基于数据报的UDP套接字,可以向多个目的地发送数据

QNetworkProxyQuery.SctpSocket

一个面向消息的、外出的SCTP套接字

QNetworkProxyQuery.TcpServer

一个监听来自网络传入连接的TCP服务器

QNetworkProxyQuery.UrlRequest

一个更复杂的请求,涉及加载URL

QNetworkProxyQuery.SctpServer

一个监听来自网络传入连接的SCTP服务器

__init__(other)#
参数:

otherQNetworkProxyQuery

创建一个复制自otherQNetworkProxyQuery对象。

构造函数(hostname, port[, protocolTag=""[, queryType=QNetworkProxyQuery.QueryType.TcpSocket]])
参数:
  • hostname – 字符串

  • port – 整数

  • protocolTag – 字符串

  • queryTypeQueryType

创建一个类型为queryTypeQNetworkProxyQuery对象,并将协议标签设置为protocolTag。此构造函数适用于TcpSocket查询,因为它将端点主机名设置为hostname,并将端点端口号设置为port

构造函数(requestUrl[, queryType=QNetworkProxyQuery.QueryType.UrlRequest])
参数:

创建一个具有URL requestUrlQNetworkProxyQuery对象,并将查询类型设置为queryType

构造函数(bindPort[, protocolTag=""[, queryType=QNetworkProxyQuery.QueryType.TcpServer]])
参数:
  • bindPort – 整数

  • protocolTag – 字符串

  • queryTypeQueryType

创建一个类型为queryTypeQNetworkProxyQuery对象,并将协议标签设置为protocolTag。此构造函数适用于TcpSocket查询,因为它将本地端口号设置为bindPort

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

另请参阅

localPort()

__init__()

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

localPort()#
返回类型:

int

返回连接本地端口接受从远程服务器发来的数据包的端口号,如果端口未知则返回 -1。

__ne__(other)#
参数:

otherQNetworkProxyQuery

返回类型:

bool

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

__eq__(other)#
参数:

otherQNetworkProxyQuery

返回类型:

bool

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

peerHostName()#
返回类型:

str

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

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

peerPort()#
返回类型:

int

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

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

protocolTag()#
返回类型:

str

返回此 QNetworkProxyQuery 对象的协议标签,如果协议标签未知,则返回一个空的 QString。

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

另请参阅

setProtocolTag() url()

queryType()#
返回类型:

QueryType

返回查询类型。

另请参阅

setQueryType()

setLocalPort(port)#
参数:

port – 整数

设置套接字希望用于本地以接收来自远程服务器的数据包的端口号为 port。本地端口通常与 TcpServerUdpSocket 查询类型一起使用。

有效值为 0 到 65535(其中 0 表示可以接受任何端口号),或 -1,表示本地端口号未知或不适用。

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

setPeerHostName(hostname)#
参数:

hostname – 字符串

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

UdpSocketTcpServer查询类型的情况下,还可以使用对端主机名来指示预期入站连接的源地址。

setPeerPort(port)#
参数:

port – 整数

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

UdpSocketTcpServer查询类型的情况下,还可以使用对端端口号来指示预期入站连接的端口号。

setProtocolTag(protocolTag)#
参数:

protocolTag – 字符串

设置此QNetworkProxyQuery对象的协议标记为protocolTag

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

另请参阅

protocolTag()

setQueryType(type)#
参数:

typeQueryType

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

另请参阅

queryType()

setUrl(url)#
参数:

urlQUrl

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

swap(other)#
参数:

otherQNetworkProxyQuery

other 交换此网络代理查询实例。此函数非常快且不会失败。

url()#
返回类型:

QUrl

在类型为 UrlRequest 的查询中,返回此 QNetworkProxyQuery 对象的 URL 成分。

另请参阅

setUrl()