Qt로 SOCKS5를 통한 TCP 스트림 열기
목적지에 연결하기 전에 QTcpSocket의 명시적 프록시를 설정하세요. GUI 없이 Qt Network를 사용합니다.
Qt Network는 TCP 소켓에 대해 SOCKS5를 직접 협상할 수 있습니다. 기존 Qt 애플리케이션에서는 연결 전에 소켓을 구성합니다.
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
"proxy.example.net",
1080
);
socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);
socket는 기존 QTcpSocket입니다. 예제의 목적지와 포트는 애플리케이션의 TCP 서비스를 나타냅니다. Qt는 먼저 프록시에 도달한 다음 해당 목적지로 연결하도록 요청합니다. 공개 중개자가 허용되는 공개적으로 접근 가능한 TCP 서비스의 경우 SOCKS5 프록시 목록이 프록시 계정이 필요 없는 이 예제의 후보를 제공합니다. 후보가 서비스의 실제 호스트와 포트를 허용하는지 확인하세요.
일반적인 비동기 소켓 신호는 여전히 적용됩니다. 애플리케이션 데이터를 교환하기 전에 connected()을 기다리고 errorOccurred()을 처리하세요. 연결이 사용되는 동안 소켓 객체를 살아 있게 유지하세요. 블로킹 코드의 경우 대신 Qt의 문서화된 대기 메서드를 의도적인 타임아웃과 함께 사용하세요.
이에는 위젯 기반 GUI가 아니라 Qt Network가 필요합니다. 명시적 설정은 이 소켓에 속합니다. 다른 소켓은 애플리케이션 기본값을 유지하거나 다른 프록시를 선택할 수 있습니다. 이 소켓을 직접 연결로 만들려면 연결 전에 프록시 유형을 QNetworkProxy::NoProxy로 설정하세요.