Класс QNetworkProxyQuery
Класс QNetworkProxyQuery используется для запроса настроек прокси для сокета. Подробнее...
| Заголовок: | #include <QNetworkProxyQuery> |
| qmake: | QT += network |
| С момента: | Qt 4.5 |
Открытые типы
| перечисление | QueryType { TcpSocket, UdpSocket, SctpSocket, TcpServer, UrlRequest, SctpServer } |
Открытые функции
| QNetworkProxyQuery() | |
| QNetworkProxyQuery(const QUrl &requestUrl, QueryType queryType = UrlRequest) | |
| QNetworkProxyQuery(const QString &hostname, int port, const QString &protocolTag = QString(), QueryType queryType = TcpSocket) | |
| QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag = QString(), QueryType queryType = TcpServer) | |
| QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, const QUrl &requestUrl, QueryType queryType = UrlRequest) | |
| QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, const QString &hostname, int port, const QString &protocolTag = QString(), QueryType queryType = TcpSocket) | |
| QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, quint16 bindPort, const QString &protocolTag = QString(), QueryType queryType = TcpServer) | |
| QNetworkProxyQuery(const QNetworkProxyQuery &other) | |
| ~QNetworkProxyQuery() | |
| int | localPort() const |
| QNetworkConfiguration | networkConfiguration() const |
| QString | peerHostName() const |
| int | peerPort() const |
| QString | protocolTag() const |
| QueryType | queryType() const |
| void | setLocalPort(int port) |
| void | setNetworkConfiguration(const QNetworkConfiguration &networkConfiguration) |
| void | setPeerHostName(const QString &hostname) |
| void | setPeerPort(int port) |
| void | setProtocolTag(const QString &protocolTag) |
| void | setQueryType(QueryType type) |
| void | setUrl(const QUrl &url) |
| void | swap(QNetworkProxyQuery &other) |
| QUrl | url() const |
| bool | operator!=(const QNetworkProxyQuery &other) const |
| QNetworkProxyQuery & | operator=(QNetworkProxyQuery &&other) |
| QNetworkProxyQuery & | operator=(const QNetworkProxyQuery &other) |
| bool | operator==(const QNetworkProxyQuery &other) const |
Подробное описание
Класс QNetworkProxyQuery используется для запроса настроек прокси для сокета.
QNetworkProxyQuery хранит детали создаваемого сокета или выполняемого запроса. Он используется классами QNetworkProxy и QNetworkProxyFactory, чтобы приложения могли более точно управлять тем, какие прокси-серверы используются, в зависимости от деталей запроса. Это позволяет приложению применять различные настройки в зависимости от протокола или хоста назначения, например.
QNetworkProxyQuery поддерживает следующие критерии для выбора прокси:
- тип запроса
- используемый локальный номер порта
- хост назначения
- номер порта назначения
- имя протокола, например, "http" или "ftp"
- запрашиваемый URL
Хост назначения — это хост в соединении при создании исходящих соединений. Это hostName параметр, переданный в QTcpSocket::connectToHost() или компонент хоста запрошенного URL с помощью QNetworkRequest.
Номер порта назначения — это запрашиваемый порт для подключения в случае исходящих сокетов, а локальный номер порта — это порт, который сокет хочет использовать локально перед подключением к внешнему соединению. В большинстве случаев локальный номер порта используется только для сокетов, принимающих соединения (QTcpSocket) или для сокетов датаграмм (QUdpSocket).
Имя протокола — это произвольная строка, которая указывает тип искомого соединения. Например, она может соответствовать схеме URL, как "http", "https" и "ftp". В большинстве случаев выбор прокси не изменяется в зависимости от протокола, но эта информация предоставляется на случай, если можно сделать лучший выбор, например, выбрать прокси-сервер кэширования HTTP для HTTP-соединений, но более мощный прокси SOCKSv5 для всех остальных.
Конфигурация сети указывает, какую конфигурацию использовать при использовании управления носителем. Например, в мобильном телефоне настройки прокси, вероятно, будут отличаться для сотовой сети и сети Wi-Fi.
Некоторые критерии могут быть некорректны для всех типов запроса. В следующей таблице перечислены наиболее часто используемые критерии в зависимости от типа запроса.
| Тип запроса | Описание |
|---|---|
| TcpSocket | Обычные сокеты, запрашивающие соединение с удаленным сервером, как, например, QTcpSocket. Имя хоста и порт удаленного узла соответствуют значениям, переданным в QTcpSocket::connectToHost(). Локальный порт обычно равен -1, что указывает на отсутствие предпочтения по использованию порта. Компонент URL не используется. |
| UdpSocket | Сокеты на основе датаграмм, которые могут как отправлять, так и получать данные. Локальный порт, удалённый хост или удалённый порт могут быть использованы или оставлены пустыми в зависимости от характеристик сокета. Компонент URL не используется. |
| SctpSocket | Сокеты, ориентированные на сообщения, запрашивающие соединение с удалённым сервером. Имя хоста и порт удалённого узла соответствуют значениям, переданным в QSctpSocket::connectToHost(). Локальный порт обычно равен -1, что указывает на отсутствие предпочтения по использованию порта. Компонент URL не используется. |
| TcpServer | Пассивные серверные сокеты, прослушивающие порт и ожидающие входящих соединений из сети. Обычно используется только локальный порт, но удалённый адрес может быть использован в определённых случаях, например, для указания удалённого хоста, от которого ожидается соединение. Компонент URL не используется. |
| UrlRequest | Более высокоуровневый запрос, например, такие, как поступающие от QNetworkAccessManager. Эти запросы неизбежно будут использовать исходящий TCP-сокет, но этот тип запроса указывает на то, что более подробная информация присутствует в компоненте URL. Для удобства реализации хост и порт URL задаются в качестве адреса назначения. |
| SctpServer | Пассивные серверные сокеты, прослушивающие порт SCTP и ожидающие входящих соединений из сети. Обычно используется только локальный порт, но удалённый адрес может быть использован в определённых случаях, например, для указания удалённого хоста, от которого ожидается соединение. Компонент URL не используется. |
Следует отметить, что любой из критериев может отсутствовать или быть неизвестным (пустая QString для имени хоста или имени протокола, -1 для номеров портов). В этом случае функции, выполняющие запрос, должны сделать предположение или применить определённые значения по умолчанию.
См. такжеQNetworkProxy, QNetworkProxyFactory, QNetworkAccessManager и QAbstractSocket::setProxy().
Документация типов членов
перечисление QNetworkProxyQuery::QueryType
Описывает тип запроса QNetworkProxyQuery.
| Константа | Значение | Описание |
|---|---|---|
QNetworkProxyQuery::TcpSocket |
0 |
обычный исходящий TCP-сокет |
QNetworkProxyQuery::UdpSocket |
1 |
сокет UDP на основе датаграмм, который может отправлять данные на несколько адресов |
QNetworkProxyQuery::SctpSocket |
2 |
ориентированный на сообщения исходящий SCTP-сокет |
QNetworkProxyQuery::TcpServer |
100 |
TCP-сервер, прослушивающий входящие соединения из сети |
QNetworkProxyQuery::UrlRequest |
101 |
более сложный запрос, включающий загрузку URL |
QNetworkProxyQuery::SctpServer |
102 |
SCTP-сервер, прослушивающий входящие соединения из сети |
См. такжеqueryType() и setQueryType().
Документация функций членов
QNetworkProxyQuery::QNetworkProxyQuery()
Создаёт объект QNetworkProxyQuery по умолчанию. По умолчанию тип запроса будет QNetworkProxyQuery::TcpSocket.
QNetworkProxyQuery::QNetworkProxyQuery(const QUrl &requestUrl, QueryType queryType = UrlRequest)
Создаёт QNetworkProxyQuery с URL requestUrl и устанавливает тип запроса на queryType.
См. такжеprotocolTag(), peerHostName() и peerPort().
QNetworkProxyQuery::QNetworkProxyQuery(const QString &hostname, int port, const QString &protocolTag = QString(), QueryType queryType = TcpSocket)
Создаёт QNetworkProxyQuery типа queryType и устанавливает тег протокола в protocolTag. Этот конструктор подходит для запросов QNetworkProxyQuery::TcpSocket, так как он устанавливает имя хоста удалённого узла в hostname и номер порта удалённого узла в port.
QNetworkProxyQuery::QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag = QString(), QueryType queryType = TcpServer)
Создаёт QNetworkProxyQuery типа queryType и устанавливает тег протокола в protocolTag. Этот конструктор подходит для запросов QNetworkProxyQuery::TcpSocket, так как он устанавливает номер локального порта в bindPort.
Обратите внимание, что bindPort имеет тип quint16 для указания точного номера порта. Значение -1 (неизвестно) в этом контексте недопустимо.
См. такжеlocalPort().
QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, const QUrl &requestUrl, QueryType queryType = UrlRequest)
Создаёт QNetworkProxyQuery с URL requestUrl и устанавливает тип запроса на queryType. Указанная networkConfiguration используется для разрешения настроек прокси.
См. такжеprotocolTag(), peerHostName(), peerPort() и networkConfiguration().
QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, const QString &hostname, int port, const QString &protocolTag = QString(), QueryType queryType = TcpSocket)
Создаёт QNetworkProxyQuery типа queryType и устанавливает тег протокола в protocolTag. Этот конструктор подходит для запросов QNetworkProxyQuery::TcpSocket, так как он устанавливает имя хоста удалённого узла в hostname и номер порта удалённого узла в port. Указанная networkConfiguration используется для разрешения настроек прокси.
См. такжеnetworkConfiguration().
QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkConfiguration &networkConfiguration, quint16 bindPort, const QString &protocolTag = QString(), QueryType queryType = TcpServer)
Создаёт QNetworkProxyQuery типа queryType и устанавливает тег протокола в protocolTag. Этот конструктор подходит для запросов QNetworkProxyQuery::TcpSocket, так как он устанавливает номер локального порта в bindPort. Указанная networkConfiguration используется для разрешения настроек прокси.
Обратите внимание, что bindPort имеет тип quint16 для указания точного номера порта. Значение -1 (неизвестно) в этом контексте недопустимо.
См. такжеlocalPort() и networkConfiguration().
QNetworkProxyQuery::QNetworkProxyQuery(const QNetworkProxyQuery &other)
Создаёт объект QNetworkProxyQuery, являющийся копией other.
QNetworkProxyQuery::~QNetworkProxyQuery()
Удаляет этот объект QNetworkProxyQuery.
int QNetworkProxyQuery::localPort() const
Возвращает номер порта сокета, который будет принимать входящие пакеты от удалённых серверов, или -1, если порт неизвестен.
См. также peerPort(), peerHostName() и setLocalPort().
QNetworkConfiguration QNetworkProxyQuery::networkConfiguration() const
Возвращает компонент конфигурации сети запроса.
См. также setNetworkConfiguration().
QString QNetworkProxyQuery::peerHostName() const
Возвращает имя хоста или IP-адрес запрашиваемого исходящего подключения, или пустую строку, если имя удаленного хоста неизвестно.
Если тип запроса — QNetworkProxyQuery::UrlRequest, эта функция возвращает компонент хоста запрашиваемого URL.
См. также peerPort(), localPort() и setPeerHostName().
int QNetworkProxyQuery::peerPort() const
Возвращает номер порта для исходящего запроса или -1, если номер порта неизвестен.
Если тип запроса — QNetworkProxyQuery::UrlRequest, эта функция возвращает номер порта запрашиваемого URL. В общем случае фреймворки заполняют номер порта значениями по умолчанию.
См. также peerHostName(), localPort() и setPeerPort().
QString QNetworkProxyQuery::protocolTag() const
Возвращает тег протокола для объекта QNetworkProxyQuery, или пустой QString, если тег протокола неизвестен.
В случае запросов типа QNetworkProxyQuery::UrlRequest эта функция возвращает значение компонента схемы URL.
См. также setProtocolTag() и url().
QueryType QNetworkProxyQuery::queryType() const
Возвращает тип запроса.
См. также setQueryType().
void QNetworkProxyQuery::setLocalPort(int port)
Устанавливает номер порта, который сокет хочет использовать локально для приема входящих пакетов от удаленных серверов, в port. Локальный порт чаще всего используется с типами запросов QNetworkProxyQuery::TcpServer и QNetworkProxyQuery::UdpSocket.
Допустимые значения — от 0 до 65535 (при 0 любой номер порта будет приемлем) или -1, что означает, что локальный номер порта неизвестен или не применим.
В некоторых случаях для специальных протоколов локальный номер порта также может использоваться с запросом типа QNetworkProxyQuery::TcpSocket. В этом случае сокет указывает, что хочет использовать номер порта port при подключении к удаленному хосту.
См. также localPort(), setPeerPort() и setPeerHostName().
void QNetworkProxyQuery::setNetworkConfiguration(const QNetworkConfiguration &networkConfiguration)
Устанавливает компонент конфигурации сети для этого объекта QNetworkProxyQuery в networkConfiguration. Конфигурация сети может быть использована для возвращения различных настроек прокси в зависимости от используемой сети, например, WLAN или сети сотовой связи на мобильном телефоне.
В случае конфигураций «выбор пользователя» или «сетевая служба» необходимо сначала запустить QNetworkSession и получить активную конфигурацию из её свойств.
См. также networkConfiguration().
void QNetworkProxyQuery::setPeerHostName(const QString &hostname)
Устанавливает имя хоста исходящего подключения на hostname. Пустое имя хоста может использоваться для обозначения неизвестного удаленного хоста.
Имя удаленного хоста также может использоваться для указания ожидаемого исходного адреса входящего подключения в случае типов запросов QNetworkProxyQuery::UdpSocket или QNetworkProxyQuery::TcpServer.
См. также peerHostName(), setPeerPort() и setLocalPort().
void QNetworkProxyQuery::setPeerPort(int port)
Устанавливает запрашиваемый номер порта для исходящего подключения на port. Допустимые значения — от 1 до 65535 или -1, чтобы указать, что номер удалённого порта неизвестен.
Номер удаленного порта также может использоваться для обозначения ожидаемого номера порта входящего подключения в случае запросов типа QNetworkProxyQuery::UdpSocket или QNetworkProxyQuery::TcpServer.
См. также peerPort(), setPeerHostName() и setLocalPort().
void QNetworkProxyQuery::setProtocolTag(const QString &protocolTag)
Устанавливает тег протокола для объекта QNetworkProxyQuery в protocolTag.
Тег протокола — произвольная строка, указывающая, какой протокол используется по сокету, например, «http», «xmpp», «telnet» и т.д. Тег протокола используется бэкендом для возвращения запроса, более специфичного для рассматриваемого протокола: например, для подключения HTTP может использоваться кэширующий прокси-сервер HTTP, а для всех остальных подключений — более мощный прокси-сервер SOCKSv5.
См. также protocolTag().
void QNetworkProxyQuery::setQueryType(QueryType type)
Устанавливает тип запроса этого объекта в type.
См. также queryType().
void QNetworkProxyQuery::setUrl(const QUrl &url)
Устанавливает компонент URL для объекта QNetworkProxyQuery в url. Установка URL также установит тег протокола, имя удалённого хоста и номер порта. Это делается для того, чтобы упростить реализацию кода, определяющего используемый прокси-сервер.
См. также url(), peerHostName() и peerPort().
void QNetworkProxyQuery::swap(QNetworkProxyQuery &other)
Меняет местами экземпляры запроса прокси-сервера сети с other. Эта функция очень быстрая и никогда не терпит неудачу.
Эта функция была представлена в Qt 5.0.
QUrl QNetworkProxyQuery::url() const
Возвращает компонент URL этого объекта QNetworkProxyQuery в случае запроса типа QNetworkProxyQuery::UrlRequest.
См. также setUrl().
bool QNetworkProxyQuery::operator!=(const QNetworkProxyQuery &other) const
Возвращает true, если этот объект QNetworkProxyQuery не содержит те же данные, что и other.
QNetworkProxyQuery &QNetworkProxyQuery::operator=(QNetworkProxyQuery &&other)
Оператор перемещающей присваивания.
QNetworkProxyQuery &QNetworkProxyQuery::operator=(const QNetworkProxyQuery &other)
Копирует содержимое other.
bool QNetworkProxyQuery::operator==(const QNetworkProxyQuery &other) const
Возвращает true, если этот объект QNetworkProxyQuery содержит те же данные, что и other.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qnetworkproxyquery.html