QNetworkProxy Class

QNetworkProxy 클래스는 네트워크 계층 프록시를 제공합니다. 더 보기...

헤더: #include <QNetworkProxy>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

참고: 이 클래스의 모든 함수는 재인용됩니다.

공용 유형

flags Capabilities
enum Capability { TunnelingCapability, ListeningCapability, UdpTunnelingCapability, CachingCapability, HostNameLookupCapability, …, SctpListeningCapability }
enum ProxyType { 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
(since 6.8) QHttpHeaders headers() 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(QNetworkProxy::Capabilities capabilities)
void setHeader(QNetworkRequest::KnownHeaders header, const QVariant &value)
(since 6.8) void setHeaders(QHttpHeaders &&newHeaders)
(since 6.8) void setHeaders(const QHttpHeaders &newHeaders)
void setHostName(const QString &hostName)
void setPassword(const QString &password)
void setPort(quint16 port)
void setRawHeader(const QByteArray &headerName, const QByteArray &headerValue)
void setType(QNetworkProxy::ProxyType type)
void setUser(const QString &user)
void swap(QNetworkProxy &other)
QNetworkProxy::ProxyType type() const
QString user() const
bool operator!=(const QNetworkProxy &other) const
QNetworkProxy &operator=(const QNetworkProxy &other)
bool operator==(const QNetworkProxy &other) const

정적 공용 멤버

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

상세 설명

QNetworkProxy는 Qt 네트워크 클래스에 네트워크 계층 프록시 지원을 구성하기 위한 메서드를 제공합니다. 현재 지원되는 클래스는 QAbstractSocket, QTcpSocket, QUdpSocket, QTcpServerQNetworkAccessManager 입니다. 프록시 지원은 가능한 한 투명하게 설계되었습니다. 즉, 사용자가 작성한 기존 네트워크 지원 애플리케이션은 다음 코드를 사용하여 네트워크 프록시를 자동으로 지원해야 합니다.

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

Qt 4부터 지원되는 SOCKS5는 RFC 1928RFC 1929를 기반으로 합니다. 지원되는 인증 방법은 무인증과 사용자 이름/비밀번호 인증입니다. IPv4와 IPv6 모두 지원됩니다. 도메인 이름은 QNetworkProxy::HostNameLookupCapability 이 활성화된 경우 SOCKS5 서버를 통해 확인되며, 그렇지 않은 경우 로컬에서 확인되고 IP 주소가 서버로 전송됩니다. QUdpSocketQTcpServer 과 함께 SOCKS5를 사용할 때 기억해야 할 몇 가지 사항이 있습니다:

QUdpSocket 를 사용하면 bind() 호출이 시간 초과 오류와 함께 실패할 수 있습니다. bind ()에 0 이외의 포트 번호가 전달되면 지정된 포트가 사용된다는 보장이 없습니다. localPort () 및 localAddress()를 사용하여 실제 사용 중인 주소와 포트 번호를 확인하세요. 프록시된 UDP는 두 개의 UDP 연결을 거치기 때문에 패킷이 삭제될 가능성이 더 높습니다.

QTcpServer 에서 listen()으로의 호출은 시간 초과 오류로 실패할 수 있습니다. 0 이외의 포트 번호가 listen()에 전달되면 지정된 포트가 사용된다는 보장이 없습니다. serverPort () 및 serverAddress()를 사용하여 연결을 수신하는 데 사용되는 실제 주소와 포트를 확인하세요. SOCKS5는 listen() 호출당 하나의 연결만 허용하며, 각 호출마다 다른 serverPort()이 사용될 수 있습니다.

QAbstractSocketQTcpServer참조하세요 .

멤버 유형 문서

열거형 Q네트워크프록시::기능
플래그 Q네트워크프록시::기능

이 플래그는 주어진 프록시 서버가 지원하는 기능을 나타냅니다.

QNetworkProxy 객체가 생성될 때 기본적으로 다른 기능을 설정합니다(기본값 목록은 QNetworkProxy::ProxyType 참조). 그러나 개체가 생성된 후 setCapabilities()를 사용하여 기능을 변경할 수 있습니다.

QNetworkProxy 에서 지원하는 기능은 다음과 같습니다:

상수설명
QNetworkProxy::TunnelingCapability0x0001원격 호스트에 대한 투명한 터널링된 TCP 연결을 여는 기능입니다. 프록시 서버는 전송을 한 쪽에서 다른 쪽으로 그대로 중계하며 캐싱을 수행하지 않습니다.
QNetworkProxy::ListeningCapability0x0002수신 소켓을 생성하고 원격 호스트에서 들어오는 TCP 연결을 기다리는 기능.
QNetworkProxy::UdpTunnelingCapability0x0004프록시 서버를 통해 원격 호스트와 주고받는 UDP 데이터그램을 중계하는 기능.
QNetworkProxy::CachingCapability0x0008전송 내용을 캐시하는 기능. 이 기능은 각 프로토콜 및 프록시 유형에 따라 다릅니다. 예를 들어 HTTP 프록시는 "GET" 명령으로 전송된 웹 데이터의 내용을 캐시할 수 있습니다.
QNetworkProxy::HostNameLookupCapability0x0010애플리케이션이 이름 조회를 수행하고 IP 주소에 대한 연결만 요청하는 것과 달리 원격 호스트 이름에 대한 조회를 수행하여 연결할 수 있는 기능.
QNetworkProxy::SctpTunnelingCapability0x00020원격 호스트에 대한 투명한 터널링된 SCTP 연결을 열 수 있는 기능.
QNetworkProxy::SctpListeningCapability0x00040수신 대기 소켓을 생성하고 원격 호스트에서 들어오는 SCTP 연결을 기다리는 기능.

Capabilities 유형은 QFlags<Capability>에 대한 타입 정의입니다. Capability 값의 OR 조합을 저장합니다.

enum QNetworkProxy::ProxyType

이 열거형은 Qt에서 제공하는 네트워크 프록시 유형을 설명합니다.

Qt가 이해하는 프록시에는 투명 프록시와 캐싱 프록시라는 두 가지 유형이 있습니다. 첫 번째 그룹은 임의의 데이터 전송을 처리할 수 있는 프록시이고, 두 번째 그룹은 특정 요청만 처리할 수 있는 프록시로 구성됩니다. 캐싱 프록시는 사용할 수 있는 특정 클래스에서만 의미가 있습니다.

상수설명
QNetworkProxy::NoProxy2프록시가 사용되지 않음
QNetworkProxy::DefaultProxy0setApplicationProxy()를 사용하여 설정한 애플리케이션 프록시에 따라 프록시가 결정됩니다.
QNetworkProxy::Socks5Proxy1Socks5 프록시가 사용됩니다.
QNetworkProxy::HttpProxy3HTTP 투명 프록시가 사용됩니다.
QNetworkProxy::HttpCachingProxy4HTTP 요청에 대해서만 프록시 사용
QNetworkProxy::FtpCachingProxy5FTP 요청에 대해서만 프록시 사용

아래 표에는 다양한 프록시 유형과 해당 기능이 나와 있습니다. 각 프록시 유형마다 기능이 다르므로 프록시 유형을 선택하기 전에 이를 이해하는 것이 중요합니다.

프록시 유형설명기본 기능
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()

DefaultProxy 타입의 QNetworkProxy를 구축합니다.

프록시 유형은 applicationProxy()에 의해 결정되며, 기본값은 NoProxy 또는 시스템 전체 프록시가 구성된 경우 시스템 전체 프록시입니다.

setType() 및 setApplicationProxy()도 참조하세요 .

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

type, hostName, port, userpassword 를 사용하여 QNetworkProxy를 구성합니다.

프록시 유형 type 의 기본 기능은 자동으로 설정됩니다.

capabilities()도 참조하세요 .

QNetworkProxy::QNetworkProxy(const QNetworkProxy &other)

other 의 복사본을 생성합니다.

[noexcept] QNetworkProxy::~QNetworkProxy()

QNetworkProxy 객체를 삭제합니다.

[static] QNetworkProxy QNetworkProxy::applicationProxy()

애플리케이션 수준의 네트워크 프록시를 반환합니다.

QAbstractSocket 또는 QTcpSocket 유형이 QNetworkProxy::DefaultProxy 인 경우 이 함수가 반환하는 QNetworkProxy 이 사용됩니다.

QNetworkProxyFactory, setApplicationProxy(), QAbstractSocket::proxy() 및 QTcpServer::proxy()도 참조하세요 .

QNetworkProxy::Capabilities QNetworkProxy::capabilities() const

이 프록시 서버의 기능을 반환합니다.

setCapabilities() 및 type()도 참조하세요 .

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

이 프록시에 원시 헤더 headerName 가 사용 중이면 true 를 반환합니다. 프록시가 HttpProxy 또는 HttpCachingProxy 유형이 아닌 경우 false 을 반환합니다.

rawHeader() 및 setRawHeader()도 참조하세요 .

이 프록시에 사용 중인 경우 알려진 네트워크 헤더 header 의 값을 반환합니다. 존재하지 않으면 QVariant()(즉, 유효하지 않은 변형)를 반환합니다.

QNetworkRequest::KnownHeaders, rawHeader() 및 setHeader()도 참조하세요 .

[since 6.8] QHttpHeaders QNetworkProxy::headers() const

이 네트워크 요청에 설정된 헤더를 반환합니다.

프록시 유형이 HttpProxy 또는 HttpCachingProxy 이 아닌 경우 기본 구성인 QHttpHeaders 이 반환됩니다.

이 함수는 Qt 6.8에 도입되었습니다.

setHeaders()도 참조하세요 .

QString QNetworkProxy::hostName() const

프록시 호스트의 호스트 이름을 반환합니다.

setHostName(), setPort() 및 port()도 참조하세요 .

bool QNetworkProxy::isCachingProxy() const

이 프록시가 QNetworkProxy::CachingCapability 기능을 지원하면 true 을 반환합니다.

Qt 4.4에서는 이 기능이 프록시 유형에 묶여 있었지만, Qt 4.5부터는 setCapabilities()를 호출하여 프록시에서 캐싱 기능을 제거할 수 있습니다.

capabilities(), type() 및 isTransparentProxy()도 참조하십시오 .

bool QNetworkProxy::isTransparentProxy() const

이 프록시가 TCP 연결의 투명 터널링을 지원하는 경우 true 을 반환합니다. 이는 QNetworkProxy::TunnelingCapability 기능과 일치합니다.

Qt 4.4에서는 이 기능이 프록시 유형에 묶여 있었지만, Qt 4.5부터는 setCapabilities()를 호출하여 프록시에서 캐싱 기능을 제거할 수 있습니다.

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()로 설정할 수 있습니다.

header() 및 setRawHeader()도 참조하세요 .

QList<QByteArray> QNetworkProxy::rawHeaderList() const

이 네트워크 프록시에 설정된 모든 원시 헤더의 목록을 반환합니다. 목록은 헤더가 설정된 순서대로 나열됩니다.

프록시가 HttpProxy 또는 HttpCachingProxy 유형이 아닌 경우 빈 QList 이 반환됩니다.

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 로 설정합니다.

setType() 및 capabilities()도 참조하세요 .

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

알려진 헤더 header 의 값을 value 으로 설정하여 이전에 설정된 모든 헤더를 재정의합니다. 이 작업은 동등한 원시 HTTP 헤더도 설정합니다.

프록시 유형이 HttpProxy 또는 HttpCachingProxy 이 아닌 경우 이 작업은 아무런 영향을 미치지 않습니다.

QNetworkRequest::KnownHeaders, setRawHeader() 및 header()도 참조하세요 .

[since 6.8] void QNetworkProxy::setHeaders(QHttpHeaders &&newHeaders)

이 네트워크 요청의 헤더로 newHeaders 을 설정하여 이전에 설정된 모든 헤더를 재정의합니다.

일부 헤더가 알려진 헤더에 해당하는 경우 값이 구문 분석되고 해당 구문 분석된 양식도 설정됩니다.

프록시가 HttpProxy 또는 HttpCachingProxy 유형이 아닌 경우 이 함수는 아무런 영향을 미치지 않습니다.

이 함수는 Qt 6.8에 도입되었습니다.

headers() 및 QNetworkRequest::KnownHeaders참조하세요 .

[since 6.8] void QNetworkProxy::setHeaders(const QHttpHeaders &newHeaders)

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.8에 도입되었습니다.

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 이 아닌 경우에는 아무런 효과가 없습니다.

QNetworkRequest::KnownHeaders, setHeader(), hasRawHeader() 및 rawHeader()도 참조하세요 .

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

이 인스턴스의 프록시 유형을 type 로 설정합니다.

setCapabilities()로 설정된 기능이 있는 경우 프록시 유형을 변경해도 이 QNetworkProxy 개체가 보유한 기능 집합은 변경되지 않습니다.

type() 및 setCapabilities()도 참조하세요 .

void QNetworkProxy::setUser(const QString &user)

프록시 인증의 사용자 이름을 user 로 설정합니다.

user(), setPassword() 및 password()도 참조하세요 .

[noexcept] void QNetworkProxy::swap(QNetworkProxy &other)

이 네트워크 프록시 인스턴스를 other 로 바꿉니다. 이 작업은 매우 빠르며 실패하지 않습니다.

QNetworkProxy::ProxyType QNetworkProxy::type() const

이 인스턴스의 프록시 유형을 반환합니다.

setType()도 참조하세요 .

QString QNetworkProxy::user() const

인증에 사용된 사용자 이름을 반환합니다.

setUser(), setPassword() 및 password()도 참조하세요 .

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

이 네트워크 프록시의 값을 other 와 비교하고 다를 경우 true 을 반환합니다.

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

네트워크 프록시 other 의 값을 이 네트워크 프록시에 할당합니다.

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

이 네트워크 프록시의 값을 other 와 비교하여 동일한 경우 true 을 반환합니다(프록시 유형, 서버, 사용자 이름 및 비밀번호가 동일).

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.