이 페이지에서

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 Network 클래스에 네트워크 계층 프록시 지원을 구성하는 메서드를 제공합니다. 현재 지원되는 클래스는 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

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

QUdpSocket 를 사용할 경우, bind() 호출이 타임아웃 오류로 실패할 수 있습니다. bind()에 0 이외의 포트 번호가 전달되더라도, 지정된 포트가 실제로 사용될 것이라고 보장할 수 없습니다. localPort() 및 localAddress()를 사용하여 실제로 사용 중인 주소와 포트 번호를 확인하십시오. 프록시된 UDP는 두 개의 UDP 연결을 거치므로 패킷이 손실될 가능성이 더 높습니다.

QTcpServer 를 사용할 경우, ` listen()` 호출이 타임아웃 오류로 실패할 수 있습니다. ` listen()`에 0이 아닌 포트 번호를 전달하면, 지정된 포트가 사용될 것이라고 보장되지 않습니다. 연결 수신에 사용되는 실제 주소와 포트를 확인하려면 ` serverPort()` 및 ` serverAddress()`를 사용하십시오. SOCKS5는 listen() 호출당 하나의 수락된 연결만 지원하며, 호출할 때마다 서로 다른 serverPort()가 사용될 가능성이 높습니다.

QAbstractSocket 및 QTcpServer도 참조하십시오 .

멤버 유형 문서

enum QNetworkProxy::Capability
flags QNetworkProxy::Capabilities

이 플래그들은 특정 프록시 서버가 지원하는 기능을 나타냅니다.

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>에 대한 typedef입니다. 이 유형은 Capability 값들의 OR 조합을 저장합니다.

enum QNetworkProxy::ProxyType

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

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
캐싱 전용 FTPFTP 프록시를 사용하여 구현되며, 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, user 및 password 를 사용하여 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 를 반환합니다.

© 2026 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.