QNetworkProxy Class
QNetworkProxy クラスは、ネットワーク層のプロキシを提供します。詳細...
| ヘッダー: | #include <QNetworkProxy> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QNetworkProxy は、ネットワークプログラミング APIおよび暗黙的に共有されるクラスの一部です。
注:このクラスのすべての関数は再入可能です。
パブリック型
| flags | Capabilities |
| enum | Capability { TunnelingCapability, ListeningCapability, UdpTunnelingCapability, CachingCapability, HostNameLookupCapability, …, SctpListeningCapability } |
| enum | ProxyType { NoProxy, DefaultProxy, Socks5Proxy, HttpProxy, HttpCachingProxy, FtpCachingProxy } |
パブリック関数
| QNetworkProxy() | |
| QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString()) | |
| QNetworkProxy(const QNetworkProxy &other) | |
| ~QNetworkProxy() | |
| QNetworkProxy::Capabilities | capabilities() const |
| bool | hasRawHeader(const QByteArray &headerName) const |
| QVariant | header(QNetworkRequest::KnownHeaders header) const |
(since 6.8) QHttpHeaders | headers() const |
| QString | hostName() const |
| bool | isCachingProxy() const |
| bool | isTransparentProxy() const |
| QString | password() const |
| quint16 | port() const |
| QByteArray | rawHeader(const QByteArray &headerName) const |
| QList<QByteArray> | rawHeaderList() const |
| void | setCapabilities(QNetworkProxy::Capabilities capabilities) |
| void | setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value) |
(since 6.8) void | setHeaders(QHttpHeaders &&newHeaders) |
(since 6.8) void | setHeaders(const QHttpHeaders &newHeaders) |
| void | setHostName(const QString &hostName) |
| void | setPassword(const QString &password) |
| void | setPort(quint16 port) |
| void | setRawHeader(const QByteArray &headerName, const QByteArray &headerValue) |
| void | setType(QNetworkProxy::ProxyType type) |
| void | setUser(const QString &user) |
| void | swap(QNetworkProxy &other) |
| 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) |
詳細な説明
QAbstractSocket 、QTcpSocket 、QUdpSocket 、QTcpServer 、およびQNetworkAccessManager です。プロキシサポートは、可能な限り透過的になるように設計されています。つまり、既存のネットワーク対応アプリケーションは、以下のコードを使用することで、自動的にネットワークプロキシをサポートするようになります。
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()、またはlisten() で使用されるアドレスがQHostAddress::LocalHost またはQHostAddress::LocalHostIPv6 と同等である場合、ネットワークプロキシは使用されません。
各プロキシサポートの種類には、それぞれ特定の制限があります。使用するプロキシの種類を選択する前に、ProxyType のドキュメントを注意深くお読みください。
注: 現在接続中のソケットに対して行った変更は 反映されません。接続済みのソケットを変更する必要がある場合は、再接続する必要があります。
SOCKS5
Qt 4以降のSOCKS5サポートは、RFC 1928およびRFC 1929に基づいています。サポートされている認証方法は、認証なしおよびユーザー名/パスワード認証です。IPv4とIPv6の両方がサポートされています。QNetworkProxy::HostNameLookupCapability が有効になっている場合、ドメイン名はSOCKS5サーバーを介して解決されます。有効になっていない場合は、ローカルで解決され、IPアドレスがサーバーに送信されます。QUdpSocket およびQTcpServer でSOCKS5を使用する際、以下の点に留意する必要があります:
QUdpSocket を使用している場合、bind()への呼び出しがタイムアウトエラーで失敗する可能性があります。bind()に0以外のポート番号が渡された場合、指定されたポートが使用されるとは限りません。 実際に使用されているアドレスとポート番号を取得するには、localPort() およびlocalAddress() を使用してください。プロキシ経由の UDP は 2 つの UDP 接続を経由するため、パケットがドロップされる可能性が高くなります。
QTcpServer を使用する場合、listen() の呼び出しはタイムアウトエラーで失敗する可能性があります。listen() に 0 以外のポート番号が渡された場合、指定されたポートが使用されることは保証されません。接続をリッスンするために実際に使用されているアドレスとポートを取得するには、serverPort() およびserverAddress() を使用してください。 SOCKS5 では、listen() の呼び出しごとに 1 つの接続のみを受け付け、呼び出しごとに異なるserverPort() が使用される可能性があります。
QAbstractSocket および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 アドレスへの接続のみを要求することを必要とせず、リモートホスト名の検索を実行してそのホストに接続する機能。 |
QNetworkProxy::SctpTunnelingCapability | 0x00020 | リモートホストへの透過的なトンネル型 SCTP 接続を開く機能。 |
QNetworkProxy::SctpListeningCapability | 0x00040 | リスニングソケットを作成し、リモートホストからの SCTP 接続を待機する機能。 |
Capabilities 型は、QFlags<Capability> の typedef です。これは、Capability 値の OR 結合を格納します。
enum QNetworkProxy::ProxyType
この列挙型は、Qt で提供されるネットワークプロキシの種類を記述するものです。
Qt が認識するプロキシには、透過型プロキシとキャッシュ型プロキシの 2 種類があります。前者は任意のデータ転送を処理できるプロキシで構成され、後者は特定の要求のみを処理できます。キャッシュ型プロキシは、それが使用可能な特定のクラスにおいてのみ意味を持ちます。
| 定数 | 値 | 説明 |
|---|---|---|
QNetworkProxy::NoProxy | 2 | プロキシは使用されない |
QNetworkProxy::DefaultProxy | 0 | setApplicationProxy() を使用して設定されたアプリケーションプロキシに基づいてプロキシが決定される |
QNetworkProxy::Socks5Proxy | 1 | Socks5 プロキシが使用される |
QNetworkProxy::HttpProxy | 3 | HTTP透過プロキシが使用される |
QNetworkProxy::HttpCachingProxy | 4 | HTTPリクエストのみプロキシ処理 |
QNetworkProxy::FtpCachingProxy | 5 | FTPリクエストに対してのみプロキシ処理が行われます |
以下の表に、さまざまなプロキシの種類とその機能の一覧を示します。プロキシの種類ごとに機能が異なるため、プロキシの種類を選択する前に、それらの機能を理解しておくことが重要です。
| プロキシの種類 | 説明 | デフォルトの機能 |
|---|---|---|
| SOCKS 5 | あらゆる種類の接続に対応する汎用プロキシ。TCP、UDP、ポートへのバインディング(着信接続)、および認証をサポートしています。 | TunnelingCapability、ListeningCapability 、UdpTunnelingCapability 、HostNameLookupCapability |
| HTTP | 「CONNECT」コマンドを使用して実装されており、送信側のTCP接続のみをサポートします。認証もサポートしています。 | TunnelingCapability,CachingCapability,HostNameLookupCapability |
| キャッシュ専用HTTP | 通常の HTTP コマンドを使用して実装され、HTTP リクエストのコンテキストでのみ有用です(QNetworkAccessManager を参照)。 | CachingCapability,HostNameLookupCapability |
| キャッシュ専用 HTTP通常の HTTP コマンドを使用して実装されており、HTTP リクエストのコンテキストでのみ有用です(xml-ph-0000@deepl.internal を参照)。,キャッシュ専用 FTP | FTPプロキシを使用して実装されており、FTPリクエストの文脈でのみ有用です(QNetworkAccessManager を参照) | CachingCapability,HostNameLookupCapability |
また、アプリケーションのデフォルトプロキシ (setApplicationProxy()) を、TunnelingCapability 機能を持たないプロキシに設定してはならない点に注意してください。そうした場合、QTcpSocket は接続の開き方を認識できなくなります。
setType()、type()、capabilities()、およびsetCapabilities()も参照してください 。
メンバ関数のドキュメント
QNetworkProxy::QNetworkProxy()
DefaultProxy 型を持つQNetworkProxyを構築します。
プロキシの型は `applicationProxy()` によって決定され、デフォルトでは `NoProxy ` または、設定されている場合はシステム全体のプロキシが使用されます。
setType() およびsetApplicationProxy()も参照してください 。
QNetworkProxy::QNetworkProxy(QNetworkProxy::ProxyType type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString())
type 、hostName 、port 、user 、およびpassword を使用して、QNetworkProxyを構築します。
プロキシタイプ `type ` のデフォルトの機能は自動的に設定されます。
capabilities()も参照してください 。
QNetworkProxy::QNetworkProxy(const QNetworkProxy &other)
other のコピーを作成します。
[noexcept] QNetworkProxy::~QNetworkProxy()
QNetworkProxy オブジェクトを破棄します。
[static] QNetworkProxy QNetworkProxy::applicationProxy()
アプリケーションレベルのネットワークプロキシ機能を返します。
QAbstractSocket またはQTcpSocket の型がQNetworkProxy::DefaultProxy である場合、この関数によって返されるQNetworkProxy が使用されます。
QNetworkProxyFactory 、setApplicationProxy()、QAbstractSocket::proxy()、およびQTcpServer::proxy()も参照してください 。
QNetworkProxy::Capabilities QNetworkProxy::capabilities() const
このプロキシサーバーの機能を返します。
setCapabilities() およびtype()も参照してください 。
bool QNetworkProxy::hasRawHeader(const QByteArray &headerName) const
このプロキシで生ヘッダー `headerName ` が使用されている場合は、true を返します。プロキシのタイプが `HttpProxy ` または `HttpCachingProxy` でない場合は、false を返します。
rawHeader() およびsetRawHeader()も参照してください 。
QVariant QNetworkProxy::header(QNetworkRequest::KnownHeaders header) const
このプロキシで使用されている場合、既知のネットワークヘッダー `header ` の値を返します。存在しない場合は、`QVariant()`(つまり、無効なバリアント)を返します。
QNetworkRequest::KnownHeaders 、rawHeader()、およびsetHeader()も参照してください 。
[since 6.8] QHttpHeaders QNetworkProxy::headers() const
このネットワークリクエストで設定されたヘッダーを返します。
プロキシがHttpProxy またはHttpCachingProxy のいずれの型でもない場合、デフォルト構築されたQHttpHeaders が返されます。
この関数は Qt 6.8 で導入されました。
setHeaders()も参照してください 。
QString QNetworkProxy::hostName() const
プロキシホストのホスト名を返します。
setHostName()、setPort()、およびport()も参照してください 。
bool QNetworkProxy::isCachingProxy() const
このプロキシが「QNetworkProxy::CachingCapability 」機能に対応している場合、true を返します。
Qt 4.4 では、この機能はプロキシの型に紐付けられていましたが、Qt 4.5 以降では、setCapabilities() を呼び出すことで、プロキシからキャッシュ機能を削除することが可能になりました。
capabilities()、type()、およびisTransparentProxy()も参照してください 。
bool QNetworkProxy::isTransparentProxy() const
このプロキシが TCP 接続の透過的トンネリングをサポートしている場合、true を返します。これは、QNetworkProxy::TunnelingCapability 機能に対応しています。
Qt 4.4 では、この機能はプロキシのタイプに紐付けられていましたが、Qt 4.5 以降では、setCapabilities() を呼び出すことで、プロキシからキャッシュ機能を削除することが可能になりました。
capabilities()、type()、およびisCachingProxy()も参照してください 。
QString QNetworkProxy::password() const
認証に使用されたパスワードを返します。
user()、setPassword()、およびsetUser()も参照してください 。
quint16 QNetworkProxy::port() const
プロキシホストのポートを返します。
setHostName()、setPort()、およびhostName()も参照してください 。
QByteArray QNetworkProxy::rawHeader(const QByteArray &headerName) const
ヘッダー `headerName` の生データを返します。そのようなヘッダーが存在しない場合、またはプロキシが `HttpProxy ` または `HttpCachingProxy` 型でない場合は、空の `QByteArray ` が返されます。これは、ヘッダーは存在するが内容がない場合と見分けがつかない可能性があります(ヘッダーが存在するかどうかを確認するには、hasRawHeader() を使用してください)。
生のヘッダーは、setRawHeader() またはsetHeader() を使用して設定できます。
header() およびsetRawHeader()も参照してください 。
QList<QByteArray> QNetworkProxy::rawHeaderList() const
このネットワークプロキシに設定されているすべての生ヘッダーのリストを返します。リストは、ヘッダーが設定された順に並んでいます。
プロキシの型がHttpProxy またはHttpCachingProxy でない場合、空のQList が返されます。
hasRawHeader() およびrawHeader()も参照してください 。
[static] void QNetworkProxy::setApplicationProxy(const QNetworkProxy &networkProxy)
アプリケーションレベルのネットワークプロキシ設定を「networkProxy 」に設定します。
QAbstractSocket またはQTcpSocket がQNetworkProxy::DefaultProxy 型の場合、この関数で設定されたQNetworkProxy が使用されます。使用するプロキシをより柔軟に決定したい場合は、QNetworkProxyFactory クラスを使用してください。
この関数でデフォルトのプロキシ値を設定すると、QNetworkProxyFactory::setApplicationProxyFactory で設定されたアプリケーションのプロキシファクトリが上書きされ、システムプロキシの使用が無効になります。
QNetworkProxyFactory 、applicationProxy()、QAbstractSocket::setProxy()、およびQTcpServer::setProxy()も参照してください 。
void QNetworkProxy::setCapabilities(QNetworkProxy::Capabilities capabilities)
このプロキシの機能セットを `capabilities` に設定します。
setType() およびcapabilities()も参照してください 。
void QNetworkProxy::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
既知のヘッダー「header 」の値を「value 」に設定し、以前に設定されたヘッダーを上書きします。この操作では、これに対応する生のHTTPヘッダーも設定されます。
プロキシのタイプが `HttpProxy ` または `HttpCachingProxy ` でない場合、この操作は効果を持ちません。
QNetworkRequest::KnownHeaders 、setRawHeader()、およびheader()も参照してください 。
[since 6.8] void QNetworkProxy::setHeaders(QHttpHeaders &&newHeaders)
このネットワークリクエストのヘッダーとして `newHeaders ` を設定し、以前に設定されたヘッダーを上書きします。
既知のヘッダーと一致するヘッダーがある場合、その値が解析され、対応する解析済み形式も設定されます。
プロキシのタイプが `HttpProxy ` または `HttpCachingProxy ` でない場合、この関数は何の効果も持ちません。
この関数は Qt 6.8 で導入されました。
headers() およびQNetworkRequest::KnownHeadersも参照してください 。
[since 6.8] void QNetworkProxy::setHeaders(const QHttpHeaders &newHeaders)
これはオーバーロードされた関数です。
この関数は Qt 6.8 で導入されました。
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::setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)
ヘッダー「headerName 」の値を「headerValue 」に設定します。もし「headerName 」が既知のヘッダー(QNetworkRequest::KnownHeaders を参照)に対応する場合、生形式のデータが解析され、対応する「処理済み」のヘッダーも設定されます。
例:
request.setRawHeader(QByteArray("Last-Modified"), QByteArray("Sun, 06 Nov 1994 08:49:37 GMT"));これにより、既知のヘッダー LastModifiedHeader も、解析された日付のQDateTime オブジェクトとして設定されます。
注: 同じヘッダーを 2回設定すると 、以前の設定が上書きされます。同じ名前の複数の HTTP ヘッダーの挙動を実現するには、2 つの値をコンマ (",") で区切って連結し、1 つの生のヘッダーとして設定する必要があります。
プロキシがHttpProxy またはHttpCachingProxy のタイプでない場合、この設定は効果を持ちません。
関連項目: QNetworkRequest::KnownHeaders 、setHeader()、hasRawHeader()、およびrawHeader()。
void QNetworkProxy::setType(QNetworkProxy::ProxyType type)
このインスタンスのプロキシタイプを「type 」に設定します。
なお、setCapabilities() によって機能が設定されている場合、プロキシのタイプを変更しても、このQNetworkProxy オブジェクトが保持する機能のセットは変更されません。
type() およびsetCapabilities()も参照してください 。
void QNetworkProxy::setUser(const QString &user)
プロキシ認証のユーザー名をuser に設定します。
user()、setPassword()、およびpassword()も参照してください 。
[noexcept] void QNetworkProxy::swap(QNetworkProxy &other)
このネットワークプロキシインスタンスをother と切り替えます。この操作は非常に高速で、失敗することはありません。
QNetworkProxy::ProxyType QNetworkProxy::type() const
このインスタンスのプロキシ型を返します。
setType()も参照してください 。
QString QNetworkProxy::user() const
認証に使用されたユーザー名を返します。
setUser()、setPassword()、およびpassword()も参照してください 。
bool QNetworkProxy::operator!=(const QNetworkProxy &other) const
このネットワークプロキシの値をother と比較し、両者が異なる場合はtrue を返します。
QNetworkProxy &QNetworkProxy::operator=(const QNetworkProxy &other)
ネットワークプロキシ「other 」の値を、このネットワークプロキシに割り当てます。
bool QNetworkProxy::operator==(const QNetworkProxy &other) const
このネットワークプロキシの値をother と比較し、両者が等しい場合(プロキシの種類、サーバー、ユーザー名、パスワードがすべて一致する場合)、true を返します。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.