Membuka Strim TCP Melalui SOCKS5 dengan Qt
Tetapkan proksi eksplisit QTcpSocket sebelum menyambung ke destinasi, menggunakan Qt Network tanpa keperluan GUI.
Qt Network boleh merundingkan SOCKS5 untuk soket TCP secara terus. Dalam aplikasi Qt sedia ada, konfigurasikan soket sebelum menyambung:
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
"proxy.example.net",
1080
);
socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);
socket ialah QTcpSocket sedia ada. Destinasi dan port dalam contoh mewakili perkhidmatan TCP aplikasi. Qt mula-mula sampai ke proksi, kemudian memintanya menyambung ke destinasi itu. Bagi perkhidmatan TCP yang boleh dicapai secara awam dan perantara awam dibenarkan, senarai proksi SOCKS5 menyediakan calon untuk contoh tanpa akaun proksi ini. Sahkan bahawa calon itu membenarkan hos dan port sebenar perkhidmatan.
Isyarat soket tak segerak biasa masih terpakai: tunggu connected() sebelum bertukar data aplikasi, dan kendalikan errorOccurred(). Kekalkan objek soket hidup semasa sambungan digunakan. Untuk kod penyekat, gunakan kaedah tunggu yang didokumenkan Qt dengan tamat masa yang sengaja ditetapkan.
Ini memerlukan Qt Network, bukan GUI berasaskan widget. Tetapan eksplisit ini milik soket ini sahaja. Soket lain boleh mengekalkan lalai aplikasi atau memilih proksi lain. Untuk menjadikan soket ini terus, tetapkan jenis proksinya kepada QNetworkProxy::NoProxy sebelum menyambung.