Mở luồng TCP qua SOCKS5 bằng Qt
Đặt proxy tường minh cho QTcpSocket trước khi kết nối tới đích, dùng Qt Network mà không cần GUI.
Qt Network có thể thương lượng SOCKS5 trực tiếp cho một socket TCP. Trong ứng dụng Qt hiện có, hãy cấu hình socket trước khi kết nối:
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
"proxy.example.net",
1080
);
socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);
socket là một QTcpSocket hiện có. Đích và cổng trong ví dụ đại diện cho dịch vụ TCP của ứng dụng. Qt tới proxy trước, sau đó yêu cầu proxy kết nối tới đích đó. Với một dịch vụ TCP truy cập công khai và được phép dùng trung gian công cộng, danh sách proxy SOCKS5 cung cấp các ứng viên cho ví dụ không dùng tài khoản proxy này. Hãy xác nhận ứng viên cho phép đúng máy chủ và cổng thực tế của dịch vụ.
Các tín hiệu socket bất đồng bộ thông thường vẫn áp dụng: chờ connected() trước khi trao đổi dữ liệu ứng dụng, và xử lý errorOccurred(). Giữ đối tượng socket tồn tại trong khi kết nối đang được dùng. Với mã chặn, thay vào đó hãy dùng các phương thức chờ đã được Qt ghi tài liệu với thời gian chờ được đặt có chủ đích.
Việc này cần Qt Network, không phải GUI dựa trên widget. Thiết lập tường minh thuộc về chính socket này. Các socket khác có thể giữ mặc định của ứng dụng hoặc chọn proxy khác. Để socket này đi trực tiếp, đặt loại proxy của nó thành QNetworkProxy::NoProxy trước khi kết nối.