PySide6.QtNetwork.QNetworkProxyQuery

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__()

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

__init__(other)
Parameters:

其他QNetworkProxyQuery

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

__init__(requestUrl[, queryType=QNetworkProxyQuery.QueryType.UrlRequest])
Parameters:

使用URL requestUrl 构造一个 QNetworkProxyQuery 并将查询类型设置为 queryType

__init__(bindPort[, protocolTag=""[, queryType=QNetworkProxyQuery.QueryType.TcpServer]])
Parameters:
  • bindPort – int

  • protocolTag – str

  • queryTypeQueryType

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

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

另请参阅

localPort()

__init__(hostname, port[, protocolTag=""[, queryType=QNetworkProxyQuery.QueryType.TcpSocket]])
Parameters:
  • hostname – str

  • port – int

  • protocolTag – str

  • queryTypeQueryType

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

localPort()
Return type:

整数

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

__ne__(other)
Parameters:

其他QNetworkProxyQuery

Return type:

布尔

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

__eq__(other)
Parameters:

其他QNetworkProxyQuery

Return type:

布尔

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

peerHostName()
Return type:

字符串

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

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

peerPort()
Return type:

整数

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

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

protocolTag()
Return type:

字符串

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

在查询类型为 UrlRequest 的情况下,此函数返回URL的方案组件的值。

另请参阅

setProtocolTag() url()

queryType()
Return type:

QueryType

返回查询类型。

另请参阅

setQueryType()

setLocalPort(port)
Parameters:

端口 – int

设置套接字希望本地使用的端口号,以接受来自远程服务器的传入数据包到port。本地端口最常用于TcpServerUdpSocket查询类型。

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

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

setPeerHostName(hostname)
Parameters:

主机名 – str

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

在对等主机名的情况下,也可以用于指示传入连接的预期源地址,例如UdpSocketTcpServer查询类型。

setPeerPort(port)
Parameters:

端口 – int

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

在对等端口号的情况下,也可以用于指示预期传入连接的端口号,例如UdpSocketTcpServer查询类型。

setProtocolTag(protocolTag)
Parameters:

protocolTag – str

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

协议标签是一个任意字符串,用于指示通过套接字进行通信的协议,例如“http”、“xmpp”、“telnet”等。后端使用协议标签来返回更特定于该协议的请求:例如,HTTP连接可以使用缓存HTTP代理服务器,而所有其他连接则使用更强大的SOCKSv5代理服务器。

另请参阅

protocolTag()

setQueryType(type)
Parameters:

类型QueryType

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

另请参阅

queryType()

setUrl(url)
Parameters:

urlQUrl

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

swap(other)
Parameters:

其他QNetworkProxyQuery

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

url()
Return type:

QUrl

返回此QNetworkProxyQuery对象的URL组件,如果查询类型为UrlRequest

另请参阅

setUrl()