Spec-Zone.ru › Qt 6.0

Класс QNetworkProxyQuery

Класс QNetworkProxyQuery используется для запроса параметров прокси для сокета. Подробнее...

Заголовок: #include <QNetworkProxyQuery>
CMake: find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
  • Список всех членов, включая унаследованные

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

Перечисление QueryType { TcpSocket, UdpSocket, SctpSocket, TcpServer, UrlRequest, SctpServer }

Функции публичного доступа

QNetworkProxyQuery(const QNetworkProxyQuery &other)
QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType queryType = TcpServer)
QNetworkProxyQuery(const QString &hostname, int port, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType queryType = TcpSocket)
QNetworkProxyQuery(const QUrl &requestUrl, QNetworkProxyQuery::QueryType queryType = UrlRequest)
QNetworkProxyQuery()
QNetworkProxyQuery & operator=(const QNetworkProxyQuery &other)
~QNetworkProxyQuery()
int localPort() const
QString peerHostName() const
int peerPort() const
QString protocolTag() const
QNetworkProxyQuery::QueryType queryType() const
void setLocalPort(int port)
void setPeerHostName(const QString &hostname)
void setPeerPort(int port)
void setProtocolTag(const QString &protocolTag)
void setQueryType(QNetworkProxyQuery::QueryType type)
void setUrl(const QUrl &url)
void swap(QNetworkProxyQuery &other)
QUrl url() const
bool operator!=(const QNetworkProxyQuery &other) const
bool operator==(const QNetworkProxyQuery &other) const

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

QNetworkProxyQuery содержит детали создаваемого сокета или выполняемого запроса. Он используется классами QNetworkProxy и QNetworkProxyFactory для того, чтобы приложения имели более точный контроль над тем, какие серверы прокси используются в зависимости от деталей запроса. Это позволяет приложению применять различные настройки в зависимости от протокола или имени хоста назначения, например.

QNetworkProxyQuery поддерживает следующие критерии для выбора прокси:

  • тип запроса
  • номер локального порта, который нужно использовать
  • имя хоста назначения
  • номер порта назначения
  • имя протокола, например, "http" или "ftp"
  • запрашиваемый URL

Имя хоста назначения — это хост в соединении в случае исходящих сокетов. Это hostName параметр, передаваемый в QTcpSocket::connectToHost() или компонент хоста запрашиваемого URL с помощью QNetworkRequest.

Номер порта назначения — запрашиваемый порт для подключения в случае исходящих сокетов, а номер локального порта — это порт, который сокет хочет использовать локально перед попыткой внешнего подключения. В большинстве случаев номер локального порта используется только для сокетов прослушивания (QTcpSocket) или для сокетов дейтаграмм (QUdpSocket).

Имя протокола — произвольная строка, указывающая тип выполняемого подключения. Например, она может соответствовать схеме URL, например, "http", "https" и "ftp". В большинстве случаев выбор прокси не меняется в зависимости от протокола, но эта информация предоставляется на случай, если можно сделать лучший выбор, например, выбрать прокси-сервер кэширования HTTP для подключений на основе HTTP, но более мощный прокси SOCKSv5 для всех остальных.

Некоторые критерии могут быть некорректны для всех типов запросов. В следующей таблице перечислены наиболее часто используемые критерии в зависимости от типа запроса.

Тип запроса Описание
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(const QNetworkProxyQuery &other)

Создаёт объект QNetworkProxyQuery, являющийся копией other.

QNetworkProxyQuery::QNetworkProxyQuery(quint16 bindPort, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType queryType = TcpServer)

Создаёт QNetworkProxyQuery типа queryType и устанавливает тег протокола в protocolTag. Этот конструктор подходит для запросов QNetworkProxyQuery::TcpSocket, потому что он устанавливает номер локального порта в bindPort.

Обратите внимание, что bindPort имеет тип quint16, чтобы указать точный запрашиваемый номер порта. Значение -1 (неизвестно) в этом контексте недопустимо.

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

QNetworkProxyQuery::QNetworkProxyQuery(const QString &hostname, int port, const QString &protocolTag = QString(), QNetworkProxyQuery::QueryType queryType = TcpSocket)

Создаёт QNetworkProxyQuery типа queryType и устанавливает тег протокола в protocolTag. Этот конструктор подходит для запросов QNetworkProxyQuery::TcpSocket, потому что он устанавливает имя хоста удалённого узла в hostname и номер порта удалённого узла в port.

QNetworkProxyQuery::QNetworkProxyQuery(const QUrl &requestUrl, QNetworkProxyQuery::QueryType queryType = UrlRequest)

Создаёт QNetworkProxyQuery с URL requestUrl и устанавливает тип запроса в queryType.

См. также protocolTag(), peerHostName() и peerPort().

QNetworkProxyQuery::QNetworkProxyQuery()

Создаёт объект QNetworkProxyQuery по умолчанию. По умолчанию тип запроса будет QNetworkProxyQuery::TcpSocket.

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

Копирует содержимое other.

QNetworkProxyQuery::~QNetworkProxyQuery()

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

int QNetworkProxyQuery::localPort() const

Возвращает номер порта сокета, который будет принимать входящие пакеты от удалённых серверов, или -1, если порт неизвестен.

См. также peerPort(), peerHostName() и setLocalPort().

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().

QNetworkProxyQuery::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::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(QNetworkProxyQuery::QueryType type)

Устанавливает тип запроса этого объекта на type.

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

void QNetworkProxyQuery::setUrl(const QUrl &url)

Устанавливает компонент URL этого объекта QNetworkProxyQuery на url. Установка URL также установит тег протокола, имя удалённого хоста и номер порта. Это делается для того, чтобы упростить реализацию кода, определяющего используемый прокси-сервер.

См. также url(), peerHostName() и peerPort().

[since 5.0] 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.

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-6.0/qnetworkproxyquery.html

Spec-Zone.ru

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