Spec-Zone.ru › Qt 5.11

Класс QNetworkProxy

Класс QNetworkProxy предоставляет прокси-сервер для сетевого уровня. Подробнее...

Заголовок: #include <QNetworkProxy>
qmake: QT += network
С момента: Qt 4.1
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются перевходовыми.

Типы публичного доступа

флаги Возможности
перечисление Возможность { TunnelingCapability, ListeningCapability, UdpTunnelingCapability, CachingCapability, ..., SctpListeningCapability }
перечисление ТипПрокси { 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
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

Статические публичные члены

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

Подробное описание

Класс QNetworkProxy предоставляет прокси-сервер для сетевого уровня.

QNetworkProxy предоставляет методы для настройки поддержки прокси-сервера на уровне сети для классов Qt. Текущие поддерживаемые классы: 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

Поддержка SOCKS5 с момента Qt 4 основана на RFC 1928 и RFC 1929. Поддерживаемые методы аутентификации: отсутствие аутентификации и аутентификация по имени пользователя/паролю. Поддерживаются как IPv4, так и IPv6. Имена доменов разрешаются через сервер SOCKS5, если включена QNetworkProxy::HostNameLookupCapability, в противном случае они разрешаются локально, и IP-адрес отправляется на сервер. При использовании SOCKS5 с QUdpSocket и QTcpServer следует помнить о нескольких моментах:

При использовании QUdpSocket вызов bind() может завершиться ошибкой по таймауту. Если в bind() передаётся номер порта, отличный от 0, нет гарантии, что будет использован указанный порт. Используйте localPort() и localAddress() для получения фактического используемого адреса и номера порта. Поскольку проксированный UDP проходит через два UDP-соединения, существует большая вероятность потери пакетов.

END_OF_DOCUMENT_MARKER

При использовании QTcpServer вызов listen() может завершиться ошибкой по таймауту. Если в listen() передаётся номер порта, отличный от 0, нет гарантии, что будет использован указанный порт. Используйте serverPort() и serverAddress(), чтобы получить фактический адрес и порт, используемые для прослушивания подключений. SOCKS5 поддерживает только одно принятое подключение на вызов listen(), и каждый вызов, скорее всего, приведёт к использованию другого порта, возвращаемого serverPort().

См. также QAbstractSocket и QTcpServer.

Документация по типам членов

enum QNetworkProxy::Capabilityflags QNetworkProxy::Capabilities

Эти флаги указывают на возможности, поддерживаемые данным прокси-сервером.

QNetworkProxy по умолчанию устанавливает различные возможности при создании объекта (см. QNetworkProxy::ProxyType для списка значений по умолчанию). Однако после создания объекта можно изменить возможности с помощью setCapabilities().

Поддерживаемые QNetworkProxy возможности:

Постоянная Значение Описание
QNetworkProxy::TunnelingCapability 0x0001 Возможность открытия прозрачных, туннелированных TCP-соединений с удалённым хостом. Прокси-сервер пересылает передачу дословно с одной стороны на другую и не выполняет кэширование.
QNetworkProxy::ListeningCapability 0x0002 Возможность создания сокета для прослушивания и ожидания входящего TCP-соединения от удалённого хоста.
QNetworkProxy::UdpTunnelingCapability 0x0004 Возможность пересылки UDP-датаграмм через прокси-сервер к удалённому хосту и от него.
QNetworkProxy::CachingCapability 0x0008 Возможность кэширования содержимого передачи. Эта возможность специфична для каждого протокола и типа прокси. Например, HTTP-прокси могут кэшировать содержимое веб-данных, передаваемых командами "GET".
QNetworkProxy::HostNameLookupCapability 0x0010 Возможность подключения для выполнения поиска по имени удалённого хоста и подключения к нему, в отличие от необходимости для приложения выполнять поиск имени и запрос соединения только к IP-адресам.
QNetworkProxy::SctpTunnelingCapability 0x00020 Возможность открытия прозрачных, туннелированных SCTP-соединений с удалённым хостом.
QNetworkProxy::SctpListeningCapability 0x00040 Возможность создания сокета для прослушивания и ожидания входящего SCTP-соединения от удалённого хоста.

Этот перечисление был введён или изменён в Qt 4.5.

Тип Capabilities является псевдонимом для QFlags<Capability>. Он хранит результат побитового ИЛИ всех значений Capability.

enum QNetworkProxy::ProxyType

Это перечисление описывает типы сетевого проксирования, предоставляемые в Qt.

Qt понимает два типа прокси: прозрачные и кэширующие. Первая группа включает прокси, которые могут обрабатывать любые произвольные передачи данных, а вторая — только определённые запросы. Кэширующие прокси имеют смысл только для конкретных классов, где они могут использоваться.

Постоянная Значение Описание
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
Кэширующий FTP Реализован с использованием FTP-прокси, полезен только в контексте FTP-запросов (см. QNetworkAccessManager) CachingCapability, HostNameLookupCapability

Также обратите внимание, что вы не должны устанавливать прокси по умолчанию для приложения (setApplicationProxy()) на прокси, у которого нет возможности TunnelingCapability. В противном случае QTcpSocket не будет знать, как открыть подключения.

См. также setType(), type(), capabilities(), и setCapabilities().

Документация по функциям-членам

QNetworkProxy::QNetworkProxy()

Создаёт QNetworkProxy с типом DefaultProxy; тип прокси определяется applicationProxy(), который по умолчанию равен NoProxy.

См. также setType() и setApplicationProxy().

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

Создаёт QNetworkProxy с типом type, hostName, port, user и password.

Значения по умолчанию для возможностей прокси типа type устанавливаются автоматически.

См. также capabilities().

QNetworkProxy::QNetworkProxy(const QNetworkProxy &other)

Создаёт копию other.

QNetworkProxy::~QNetworkProxy()

Уничтожает объект QNetworkProxy.

[static] QNetworkProxy QNetworkProxy::applicationProxy()

Возвращает проксирование сети на уровне приложения.

Если у QAbstractSocket или QTcpSocket тип QNetworkProxy::DefaultProxy, тогда возвращаемый этим методом QNetworkProxy используется.

См. также QNetworkProxyFactory, setApplicationProxy(), QAbstractSocket::proxy(), и QTcpServer::proxy().

QNetworkProxy::Capabilities QNetworkProxy::capabilities() const

Возвращает возможности этого прокси-сервера.

Эта функция была введена в Qt 4.5.

См. также setCapabilities() и type().

bool QNetworkProxy::hasRawHeader(const QByteArray &headerName) const

Возвращает true , если сырой заголовок headerName используется для этого прокси. Возвращает false если прокси не является типа HttpProxy или HttpCachingProxy.

Эта функция была введена в Qt 5.0.

См. также rawHeader() и setRawHeader().

QVariant QNetworkProxy::header(QNetworkRequest::KnownHeaders header) const

Возвращает значение известного сетевого заголовка header, если он используется для этого прокси-сервера. Если его нет, возвращает QVariant() (т.е. некорректный вариант).

Эта функция была добавлена в Qt 5.0.

См. также QNetworkRequest::KnownHeaders, rawHeader() и setHeader().

QString QNetworkProxy::hostName() const

Возвращает имя хоста прокси-сервера.

См. также setHostName(), setPort() и port().

bool QNetworkProxy::isCachingProxy() const

Возвращает true , если этот прокси-сервер поддерживает возможность кэширования QNetworkProxy::CachingCapability.

В Qt 4.4 возможность кэширования была связана с типом прокси, но начиная с Qt 4.5 стало возможным отключить кэширование прокси, вызвав setCapabilities().

Эта функция была добавлена в Qt 4.4.

См. также capabilities(), type() и isTransparentProxy().

bool QNetworkProxy::isTransparentProxy() const

Возвращает true , если этот прокси-сервер поддерживает прозрачное туннелирование TCP-соединений. Это соответствует возможности 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().

QByteArray QNetworkProxy::rawHeader(const QByteArray &headerName) const

Возвращает необработанный вид заголовка headerName. Если такого заголовка нет или прокси не является типа HttpProxy или HttpCachingProxy, возвращается пустой QByteArray, что может быть неотличимо от заголовка, который есть, но не имеет содержимого (используйте hasRawHeader(), чтобы узнать, существует ли заголовок или нет).

Необработанные заголовки можно установить с помощью setRawHeader() или setHeader().

Эта функция была добавлена в Qt 5.0.

См. также header() и setRawHeader().

QList<QByteArray> QNetworkProxy::rawHeaderList() const

Возвращает список всех необработанных заголовков, установленных в этом сетевом прокси. Список находится в порядке установки заголовков.

Если прокси не является типа HttpProxy или HttpCachingProxy, возвращается пустой QList.

Эта функция была добавлена в Qt 5.0.

См. также 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.

Эта функция была добавлена в Qt 4.5.

См. также setType() и capabilities().

void QNetworkProxy::setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)

Устанавливает значение известного заголовка header на value, перезаписывая любые ранее установленные заголовки. Данная операция также устанавливает эквивалентный необработанный HTTP-заголовок.

Если прокси не является типа HttpProxy или HttpCachingProxy, это не оказывает влияния.

Эта функция была добавлена в Qt 5.0.

См. также QNetworkRequest::KnownHeaders, setRawHeader() и header().

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 проанализированной даты.

Примечание: Установка одного и того же заголовка дважды перезаписывает предыдущее значение. Чтобы получить поведение нескольких HTTP-заголовков с одинаковым именем, следует конкатенировать два значения, разделяя их запятой (",") и установить один единственный необработанный заголовок.

Если прокси не является типа HttpProxy или HttpCachingProxy, это не оказывает влияния.

Эта функция была добавлена в Qt 5.0.

См. также QNetworkRequest::KnownHeaders, setHeader(), hasRawHeader() и rawHeader().

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

Устанавливает тип прокси для этого экземпляра на type.

Обратите внимание, что изменение типа прокси не изменяет набор возможностей, которые содержит объект QNetworkProxy, если какие-либо возможности были установлены с помощью setCapabilities().

См. также type() и setCapabilities().

void QNetworkProxy::setUser(const QString &user)

Устанавливает имя пользователя для аутентификации прокси на user.

См. также user(), setPassword() и password().

void QNetworkProxy::swap(QNetworkProxy &other)

Меняет текущий экземпляр сетевого прокси на other. Эта функция очень быстрая и никогда не терпит неудачу.

Эта функция была введена в Qt 5.0.

QNetworkProxy::ProxyType QNetworkProxy::type() const

Возвращает тип прокси для данного экземпляра.

См. также setType().

QString QNetworkProxy::user() const

Возвращает имя пользователя, используемое для аутентификации.

См. также setUser(), setPassword() и password().

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

Сравнивает значение этого сетевого прокси с other и возвращает true, если они отличаются.

Эта функция была введена в Qt 4.4.

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

Оператор перемещающей присваивания.

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

Присваивает значение сетевого прокси other текущему сетевому прокси.

Эта функция была введена в Qt 4.2.

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

Сравнивает значение этого сетевого прокси с other и возвращает true, если они равны (одинаковый тип прокси, сервер, а также имя пользователя и пароль).

Эта функция была введена в Qt 4.4.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.11/qnetworkproxy.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API