Класс QNetworkProxyQuery
Класс QNetworkProxyQuery используется для запроса параметров прокси для сокета. Подробнее...
| Заголовок: | #include <QNetworkProxyQuery> |
| qmake: | QT += network |
| С момента: | Qt 4.5 |
Этот класс был представлен в Qt 4.5.
Типы public
| перечисление | QueryType { TcpSocket, UdpSocket, SctpSocket, TcpServer, UrlRequest, SctpServer } |
Public Функции
| 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 для всех остальных.
Конфигурация сети определяет, какую конфигурацию использовать, когда используется управление несущей. Например, на мобильном телефоне настройки прокси, вероятно, будут разными для сотовой сети и сети 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(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().
END_OF_DOCUMENT_MARKERvoid QNetworkProxyQuery::setQueryType(QNetworkProxyQuery::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.
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.13/qnetworkproxyquery.html