QNetworkProxy 類

The QNetworkProxy class provides a network layer proxy. 更多...

頭: #include <QNetworkProxy>
Since: Qt 4.1

注意: 此類的所有函數 可重入 .

公共類型

flags Capabilities
enum Capability { TunnelingCapability, ListeningCapability, UdpTunnelingCapability, CachingCapability, HostNameLookupCapability }
enum ProxyType { NoProxy, DefaultProxy, Socks5Proxy, HttpProxy, HttpCachingProxy, FtpCachingProxy }

公共函數

QNetworkProxy ()
QNetworkProxy (ProxyType type , const QString & hostName = QString(), quint16 port = 0, const QString & user = QString(), const QString & password = QString())
QNetworkProxy (const QNetworkProxy & other )
~QNetworkProxy ()
Capabilities capabilities () const
QString hostName () const
bool isCachingProxy () const
bool isTransparentProxy () const
QString password () const
quint16 port () const
void setCapabilities (Capabilities capabilities )
void setHostName (const QString & hostName )
void setPassword (const QString & password )
void setPort (quint16 port )
void setType (QNetworkProxy::ProxyType type )
void setUser (const QString & user )
QNetworkProxy::ProxyType type () const
QString user () const
bool operator!= (const QNetworkProxy & other ) const
QNetworkProxy & operator= (const QNetworkProxy & other )
bool operator== (const QNetworkProxy & other ) const

靜態公共成員

QNetworkProxy applicationProxy ()
void setApplicationProxy (const QNetworkProxy & networkProxy )

詳細描述

The QNetworkProxy class provides a network layer proxy.

QNetworkProxy provides the method for configuring network layer proxy support to the Qt network classes. The currently supported classes are QAbstractSocket , QTcpSocket , QUdpSocket , QTcpServer , QNetworkAccessManager and 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 文檔編製,要小心謹慎在選擇要使用的代理類型之前。

注意: 對目前已連接套接字所做的更改,不會生效。若需要更改已連接套接字,應重新連接它。

SOCKS5

The SOCKS5 support in Qt 4 is based on RFC 1928 and RFC 1929 。支持的身份驗證方法是無身份驗證,和用戶名/密碼身份驗證。IPv4 和 IPv6 兩者均支持。域名的解析是透過 SOCKS5 服務器若 QNetworkProxy::HostNameLookupCapability 被啓用,否則,它們在本地解析並把 IP 地址發送給服務器。有幾件事要記住,當使用 SOCKS5 采用 QUdpSocket and QTcpServer :

采用 QUdpSocket 調用 bind() 可能因超時錯誤而失敗。若把非 0 端口號傳遞給 bind() ,不保證會使用指定端口。使用 localPort() and localAddress() 以獲取在使用中的實際地址和端口號。由於被代理的 UDP 要通過 2 個 UDP 連接,更有可能的是會丟棄數據包。

采用 QTcpServer 調用 listen() 可能因超時錯誤而失敗。若把非 0 端口號傳遞給 listen() ,不保證會使用指定端口。使用 serverPort() and serverAddress() 以獲取用於監聽連接的實際地址和端口。SOCKS5 僅支持 1 個接受連接每次調用 listen() ,且每次調用都可能導緻不同的 serverPort() 被使用。

另請參閱 QAbstractSocket and QTcpServer .

成員類型文檔編製

enum QNetworkProxy:: Capability
flags QNetworkProxy:: Capabilities

這些標誌指示給定代理服務器支持的能力。

QNetworkProxy 默認設置不同能力,當創建對象時 (見 QNetworkProxy::ProxyType 瞭解默認列錶)。不管怎樣,在對象已創建之後改變能力是可能的采用 setCapabilities ().

能力對於 QNetworkProxy 支持置包括:

常量 描述
QNetworkProxy::TunnelingCapability 0x0001 能打開到遠程主機的透明、隧道化 TCP 連接。代理服務器將從一側到另一側逐字傳輸且不進行緩存。
QNetworkProxy::ListeningCapability 0x0002 能創建監聽套接字並等待來自遠程主機的 TCP 連接。
QNetworkProxy::UdpTunnelingCapability 0x0004 能中繼 UDP 數據報憑藉代理服務器和遠程主機。
QNetworkProxy::CachingCapability 0x0008 能緩存傳輸內容。此能力特定於每種協議和代理類型。例如:HTTP 代理可以緩存采用 GET 命令傳輸的 Web 數據內容。
QNetworkProxy::HostNameLookupCapability 0x0010 能連接以履行查找遠程主機名並連接到遠程主機,而不是要求應用程序履行名稱查找並隻請求連接到 IP 地址。

該枚舉在 Qt 4.5 引入或被修改。

Capabilities 類型是 typedef 對於 QFlags <Capability>。它存儲 Capability 值的 OR 組閤。

enum QNetworkProxy:: ProxyType

此枚舉描述 Qt 提供的網絡代理類型。

Qt 理解的 2 種代理類型:透明代理和緩存代理。第 1 組由可以處理任意數據傳輸的代理組成,而第 2 組隻能處理特定請求。緩存代理隻對可以使用它們的特定類有意義。

常量 描述
QNetworkProxy::NoProxy 2 不使用代理
QNetworkProxy::DefaultProxy 0 基於應用程序代理設置確定代理,使用 setApplicationProxy ()
QNetworkProxy::Socks5Proxy 1 Socks5 代理被使用
QNetworkProxy::HttpProxy 3 HTTP transparent proxying is used (This value was introduced in 4.3.)
QNetworkProxy::HttpCachingProxy 4 Proxying for HTTP requests only (This value was introduced in 4.4.)
QNetworkProxy::FtpCachingProxy 5 Proxying for FTP requests only (This value was introduced in 4.4.)

下錶列齣瞭不同的代理類型及其能力。由於每種代理類型有不同能力,在選取代理類型之前理解它們很重要。

代理類型 描述 默認能力
SOCKS 5 用於任何連接種類的通用代理。支持 TCP、UDP、綁定到端口 (傳入連接) 及身份驗證。 TunnelingCapability , ListeningCapability , UdpTunnelingCapability , HostNameLookupCapability
HTTP 使用 CONNECT 命令實現,僅支持傳齣 TCP 連接;支持身份驗證。 TunnelingCapability , CachingCapability , HostNameLookupCapability
僅緩存 HTTP 使用正常 HTTP 命令實現,僅在 HTTP 請求上下文中有用 (見 QNetworkAccessManager ) CachingCapability , HostNameLookupCapability
緩存 FTP 使用 FTP 代理實現,僅在 FTP 請求上下文中有用 (見 QFtp , QNetworkAccessManager ) CachingCapability , HostNameLookupCapability

另請注意:不應該設置應用程序默認代理 ( setApplicationProxy ()) 到代理沒有 TunnelingCapability 能力。若做瞭, QTcpSocket 將不知道如何打開連接。

另請參閱 setType (), type (), capabilities (),和 setCapabilities ().

成員函數文檔編製

QNetworkProxy:: QNetworkProxy ()

構造 QNetworkProxy with DefaultProxy type; the proxy type is determined by applicationProxy (),默認為 NoProxy .

另請參閱 setType () 和 setApplicationProxy ().

QNetworkProxy:: QNetworkProxy ( ProxyType type , const QString & hostName = QString(), quint16 port = 0, const QString & user = QString(), const QString & password = QString())

構造 QNetworkProxy with type , hostName , port , user and password .

默認能力的代理類型 type 是自動設置的。

另請參閱 capabilities ().

QNetworkProxy:: QNetworkProxy (const QNetworkProxy & other )

構造副本為 other .

QNetworkProxy:: ~QNetworkProxy ()

銷毀 QNetworkProxy 對象。

[static] QNetworkProxy QNetworkProxy:: applicationProxy ()

返迴應用程序級彆的網絡代理。

QAbstractSocket or QTcpSocket 擁有 QNetworkProxy::DefaultProxy 類型,那麼 QNetworkProxy 被返迴通過使用此函數。

另請參閱 QNetworkProxyFactory , setApplicationProxy (), QAbstractSocket::proxy (),和 QTcpServer::proxy ().

Capabilities QNetworkProxy:: capabilities () const

返迴此代理服務器的能力。

該函數在 Qt 4.5 引入。

另請參閱 setCapabilities () 和 type ().

QString QNetworkProxy:: hostName () const

返迴代理主機的主機名。

另請參閱 setHostName (), setPort (),和 port ().

bool QNetworkProxy:: isCachingProxy () const

Returns true if this proxy supports the QNetworkProxy::CachingCapability 能力。

在 Qt 4.4,能力會被捆綁到代理類型,但從 Qt 4.5 起,從代理移除緩存能力是可能的通過調用 setCapabilities ().

該函數在 Qt 4.4 引入。

另請參閱 capabilities (), type (),和 isTransparentProxy ().

bool QNetworkProxy:: isTransparentProxy () const

Returns true if this proxy supports transparent tunneling of TCP connections. This matches the QNetworkProxy::TunnelingCapability 能力。

在 Qt 4.4,能力會被捆綁到代理類型,但從 Qt 4.5 起,從代理移除緩存能力是可能的通過調用 setCapabilities ().

該函數在 Qt 4.4 引入。

另請參閱 capabilities (), type (),和 isCachingProxy ().

QString QNetworkProxy:: password () const

返迴用於身份驗證的口令。

另請參閱 user (), setPassword (),和 setUser ().

quint16 QNetworkProxy:: port () const

返迴代理主機的端口。

另請參閱 setHostName (), setPort (),和 hostName ().

[static] void QNetworkProxy:: setApplicationProxy (const QNetworkProxy & networkProxy )

把應用程序級彆的網絡代理設為 networkProxy .

QAbstractSocket or QTcpSocket 擁有 QNetworkProxy::DefaultProxy 類型,那麼 QNetworkProxy set with this function is used. If you want more flexibility in determining which the proxy, use the QNetworkProxyFactory 類。

通過此函數設置的默認代理值將覆蓋應用程序代理工廠設置采用 QNetworkProxyFactory::setApplicationProxyFactory .

另請參閱 QNetworkProxyFactory , applicationProxy (), QAbstractSocket::setProxy (),和 QTcpServer::setProxy ().

void QNetworkProxy:: setCapabilities ( Capabilities capabilities )

將此代理的能力設為 capabilities .

該函數在 Qt 4.5 引入。

另請參閱 setType () 和 capabilities ().

void QNetworkProxy:: setHostName (const QString & hostName )

把代理主機的主機名設為 hostName .

另請參閱 hostName (), setPort (),和 port ().

void QNetworkProxy:: setPassword (const QString & password )

把代理身份驗證的口令設為 password .

另請參閱 user (), setUser (),和 password ().

void QNetworkProxy:: setPort ( quint16 port )

把代理主機的端口設為 port .

另請參閱 hostName (), setHostName (),和 port ().

void QNetworkProxy:: setType ( QNetworkProxy::ProxyType type )

把此實例的代理類型設為 type .

注意:更改代理類型不會改變設置能力由此 QNetworkProxy 對象保持的,若有設置任何能力采用 setCapabilities ().

另請參閱 type () 和 setCapabilities ().

void QNetworkProxy:: setUser (const QString & user )

把代理身份驗證的用戶名設為 user .

另請參閱 user (), setPassword (),和 password ().

QNetworkProxy::ProxyType QNetworkProxy:: type () const

返迴此實例的代理類型。

另請參閱 setType ().

QString QNetworkProxy:: user () const

返迴用於身份驗證的用戶名。

另請參閱 setUser (), setPassword (),和 password ().

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

比較此網絡代理的值與 other and returns true if they differ.

該函數在 Qt 4.4 引入。

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

賦值網絡代理值 other 到此網絡代理。

該函數在 Qt 4.2 引入。

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

比較此網絡代理的值與 other and returns true if they are equal (same proxy type, server as well as username and password)

該函數在 Qt 4.4 引入。