Spec-Zone.ru › Qt 5.6

Класс QNetworkProxy

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

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

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

Публичные типы

флаги Возможности
перечисление Возможность { СпособностьТунелирования, СпособностьПрослушивания, СпособностьТунелированияUdp, СпособностьКэширования, СпособностьРазрешенияИмениХоста }
перечисление ТипПрокси { БезПрокси, ПроксиПоУмолчанию, ПроксиSocks5, ПроксиHttp, ПроксиHttpСКэшированием, ПроксиFtpСКэшированием }

Публичные функции

QNetworkProxy()
QNetworkProxy(ТипПрокси type, const QString &hostName = QString(), quint16 port = 0, const QString &user = QString(), const QString &password = QString())
QNetworkProxy(const QNetworkProxy &other)
~QNetworkProxy()
Возможности 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
void setCapabilities(Возможности capabilities)

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

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, вероятность потери пакетов выше.

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

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

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

перечисление QNetworkProxy::Capabilityфлаги 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-адресам.

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

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

перечисление 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(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().

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(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.6/qnetworkproxy.html

Spec-Zone.ru

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