Home · All Classes · Modules · QSS HELP · QSS 案例 · VER007 HOME |
该QNetworkProxy类提供了网络层的代理。More...
该QNetworkProxy类提供了网络层的代理。
QNetworkProxy提供了方法来配置网络层代理支持Qt的网络类。目前支持的类QAbstractSocket,QTcpSocket,QUdpSocket,QTcpServer,QNetworkAccessManager和QFtp。该代理支持被设计成尽可能透明。这意味着,您已经编写现有的网络应用程序应该使用下面的代码支持自动网络代理。
QNetworkProxy proxy; proxy.setType(QNetworkProxy.Socks5Proxy); proxy.setHostName("proxy.example.com"); proxy.setPort(1080); proxy.setUser("username"); proxy.setPassword("password"); QNetworkProxy.setApplicationProxy(proxy);
另一种方法来设置应用程序范围的代理是用来指定单个插座代理QAbstractSocket.setProxy()和QTcpServer.setProxy( ) 。以这种方式,有可能禁止使用使用以下代码具体套接字的代理:
serverSocket->setProxy(QNetworkProxy.NoProxy);
网络代理不使用,如果所使用的地址connectToHost(),bind() or listen()相当于QHostAddress.LocalHost or QHostAddress.LocalHostIPv6。
每种类型的代理支持具有与之相关的某些限制。你应该阅读ProxyType文档谨慎选择代理类型使用之前。
Note:向当前连接的套接字更改不会生效。如果您需要更改连接的套接字,你应该重新连接。
socks5的支持Qt的4是基于RFC 1928和RFC 1929。支持的身份验证方法是没有身份验证和用户名/密码认证。 IPv4和IPv6的支持。域名是通过SOCKS5服务器解析,如果QNetworkProxy.HostNameLookupCapability被激活,否则它们是本地解析和IP地址被发送到服务器。有几件事情使用SOCKS5用时要记住QUdpSocket和QTcpServer:
With QUdpSocket,调用bind()超时错误可能会失败。如果不是0的端口号传递给bind(),它不能保证它是指定的端口将被使用。使用localPort()和localAddress()得到实际使用中的地址和端口号。因为代理的UDP经过两个UDP连接,它更可能是数据包将被丢弃。
With QTcpServer调用listen()超时错误可能会失败。如果不是0的端口号传递给listen()的话,就不能保证它是指定的端口将被使用。使用serverPort()和serverAddress()得到的实际地址和端口用于侦听连接。 SOCKS5只支持一个接受每个呼叫连接到listen(),并且每个呼叫很可能会导致不同的serverPort()被使用。
这些标志指示一个给定的代理服务器支持的功能。
QNetworkProxy默认情况下,设置不同的功能在创建对象时(见QNetworkProxy.ProxyType为默认值的列表) 。然而,这是可以改变capabitilies后的对象已经创建与setCapabilities( ) 。
的功能,QNetworkProxy支持有:
Constant | Value | Description |
---|---|---|
QNetworkProxy.TunnelingCapability | 0x0001 | 能够打开到远程主机透明,隧道TCP连接。代理服务器中继传输逐字从一个侧面向其他并不做任何缓存。 |
QNetworkProxy.ListeningCapability | 0x0002 | 能够创建一个监听套接字,并等待来自远程主机传入的TCP连接。 |
QNetworkProxy.UdpTunnelingCapability | 0x0004 | 能够通过代理服务器,并从远程主机中继的UDP数据报。 |
QNetworkProxy.CachingCapability | 0x0008 | 能力来缓存传递的内容。这种能力是具体到每个协议和代理类型。例如, HTTP代理缓存可以用“GET”命令传送网络数据的内容。 |
QNetworkProxy.HostNameLookupCapability | 0x0010 | 能够连接到执行查找上一个远程主机名,并连接到它,而不是要求应用程序执行名称查找,并要求连接到的IP地址只。 |
这个枚举被引入或修改的Qt 4.5 。
功能类型是一个typedef为QFlags\u003cCapability\u003e 。它存储能力值的一个或组合。
这个枚举变量描述的Qt提供的网络代理的类型。
有两种类型的代理Qt的理解:透明代理和缓存代理。第一组由代理服务器可以处理任意的数据传输,而第二个只能处理特定的请求。该缓存代理服务器才有意义的特定类,他们都可以使用。
Constant | Value | Description |
---|---|---|
QNetworkProxy.NoProxy | 2 | 无代理使用 |
QNetworkProxy.DefaultProxy | 0 | 代理服务器是基于使用应用程序代理组确定setApplicationProxy( ) |
QNetworkProxy.Socks5Proxy | 1 | Socks5代理使用 |
QNetworkProxy.HttpProxy | 3 | HTTP透明代理时(此值是在4.3推出。 ) |
QNetworkProxy.HttpCachingProxy | 4 | 代理HTTP请求只(这个值被引入4.4 。 ) |
QNetworkProxy.FtpCachingProxy | 5 | 代理FTP请求只(这个值被引入4.4 。 ) |
下表列出了不同的代理类型和它们的功能。由于每个代理类型具有不同的功能,了解他们选择代理类型之前,是很重要的。
Proxy type | Description | Default capabilities |
---|---|---|
SOCKS 5 | Generic proxy for any kind of connection. Supports TCP, UDP, binding to a port (incoming connections) and authentication. | TunnelingCapability, ListeningCapability, UdpTunnelingCapability, HostNameLookupCapability |
HTTP | Implemented using the "CONNECT" command, supports only outgoing TCP connections; supports authentication. | TunnelingCapability, CachingCapability, HostNameLookupCapability |
Caching-only HTTP | Implemented using normal HTTP commands, it is useful only in the context of HTTP requests (see QNetworkAccessManager) | CachingCapability, HostNameLookupCapability |
Caching FTP | Implemented using an FTP proxy, it is useful only in the context of FTP requests (see QFtp, QNetworkAccessManager) | CachingCapability, HostNameLookupCapability |
另外请注意,你不应该设置应用程序默认的代理(setApplicationProxy( ))以不具有的代理TunnelingCapability能力。如果你这样做,QTcpSocket将不知道如何打开连接。
See also setType( )type( )capabilities()和setCapabilities( ) 。
构造一个QNetworkProxy同DefaultProxy输入;代理类型是由确定applicationProxy( ) ,默认为NoProxy。
See also setType()和setApplicationProxy( ) 。
构造一个QNetworkProxy同type,hostName,port,user和password。
对代理类型的默认功能type会自动设定。
See also capabilities( ) 。
构造的副本other。
返回应用程序级的网络代理。
如果QAbstractSocket or QTcpSocket有QNetworkProxy.DefaultProxy输入时,则QNetworkProxy用于返回由该函数。
See also QNetworkProxyFactory,setApplicationProxy( )QAbstractSocket.proxy()和QTcpServer.proxy( ) 。
返回此代理服务器的功能。
此功能被引入Qt的4.5 。
See also setCapabilities()和type( ) 。
返回代理主机的主机名。
See also setHostName( )setPort()和port( ) 。
如果该代理支持,则返回True的QNetworkProxy.CachingCapability能力。
在Qt 4.4的能力被捆绑到代理类型,但由于Qt的4.5就可以通过调用从代理中删除高速缓存的能力setCapabilities( ) 。
此功能被引入Qt的4.4 。
See also capabilities( )type()和isTransparentProxy( ) 。
如果该代理支持TCP连接的透明隧道,则返回True 。这符合QNetworkProxy.TunnelingCapability能力。
在Qt 4.4的能力被捆绑到代理类型,但由于Qt的4.5就可以通过调用从代理中删除高速缓存的能力setCapabilities( ) 。
此功能被引入Qt的4.4 。
See also capabilities( )type()和isCachingProxy( ) 。
返回用于验证的密码。
See also user( )setPassword()和setUser( ) 。
返回代理主机的端口。
See also setHostName( )setPort()和hostName( ) 。
设置应用程序级的网络代理是networkProxy。
如果QAbstractSocket or QTcpSocket有QNetworkProxy.DefaultProxy输入时,则QNetworkProxy设置使用此功能。如果你想确定哪个代理更多的灵活性,可以使用QNetworkProxyFactory类。
设置默认值的代理使用此功能将复盖应用程序代理工厂集与QNetworkProxyFactory.setApplicationProxyFactory 。
See also QNetworkProxyFactory,applicationProxy( )QAbstractSocket.setProxy()和QTcpServer.setProxy( ) 。
设置这个代理的功能,capabilities。
此功能被引入Qt的4.5 。
See also setType()和capabilities( ) 。
设置代理主机是主机名hostName。
See also hostName( )setPort()和port( ) 。
设置密码代理身份验证是password。
See also user( )setUser()和password( ) 。
设置代理主机的端口为port。
See also hostName( )setHostName()和port( ) 。
设置为代理类型此实例type。
请注意,更改代理服务器的类型不改变设置的这个功能QNetworkProxy如有能力已经设置对象持有setCapabilities( ) 。
See also type()和setCapabilities( ) 。
设置代理身份验证是用户名user。
See also user( )setPassword()和password( ) 。
返回代理类此实例。
See also setType( ) 。
返回用于认证的用户名。
See also setUser( )setPassword()和password( ) 。
PyQt 4.10.3 for X11 | Copyright © Riverbank Computing Ltd and Nokia 2012 | Qt 4.8.5 |