Qt yordamida SOCKS5 orqali TCP oqimini ochish
Manzilga ulanishdan oldin QTcpSocket’ning aniq proksisini belgilang, GUI talab qilmaydigan Qt Network’dan foydalanib.
Qt Network TCP soket uchun SOCKS5’ni bevosita kelishib oladi. Mavjud Qt ilovasida soketni ulanishdan oldin sozlang:
QNetworkProxy proxy(
QNetworkProxy::Socks5Proxy,
"proxy.example.net",
1080
);
socket.setProxy(proxy);
socket.connectToHost("service.example.net", 12345);
socket — mavjud QTcpSocket. Misoldagi manzil va port ilovaning TCP xizmatini bildiradi. Qt avval proksiga yetib boradi, so‘ng undan shu manzilga ulanishni so‘raydi. Ommaviy kirish mumkin bo‘lgan TCP xizmati va ommaviy vositachi ruxsat etilganda, proksi hisobi yo‘q bu misol uchun SOCKS5 proksilar ro‘yxati nomzodlar beradi. Nomzod xizmatning haqiqiy hosti va portiga ruxsat berishini tekshiring.
Odatiy asinxron soket signallari hali ham amal qiladi: ilova ma’lumotlarini almashishdan oldin connected() ni kuting va errorOccurred() ni boshqaring. Ulanish ishlatilayotganda soket obyektini tirik tuting. Bloklovchi kod uchun buning o‘rniga Qt’ning hujjatlashtirilgan kutish usullarini ataylab belgilangan taym-aut bilan qo‘llang.
Bu Qt Network talab qiladi, widget’larga asoslangan GUI emas. Bu aniq sozlama aynan shu soketga tegishli. Boshqa soketlar ilovaning standart qiymatlarini saqlab qolishi yoki boshqa proksi tanlashi mumkin. Shu soket to‘g‘ridan-to‘g‘ri bo‘lishi uchun ulanishdan oldin uning proksi turini QNetworkProxy::NoProxy ga o‘rnating.