باز کردن یک جریان TCP از طریق SOCKS5 با Qt
پروکسی صریح QTcpSocket را پیش از اتصال به مقصد تنظیم کنید، با Qt Network و بدون نیاز به GUI.
Qt Network میتواند SOCKS5 را بهطور مستقیم برای یک سوکت TCP مذاکره کند. در یک برنامه 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 با یک مهلت زمانی آگاهانه استفاده کنید.
این به Qt Network نیاز دارد، نه یک GUI مبتنی بر widgets. تنظیم صریح متعلق به همین سوکت است. سوکتهای دیگر میتوانند پیشفرضهای برنامه خود را حفظ کنند یا پروکسی دیگری انتخاب کنند. برای مستقیم کردن این سوکت خاص، نوع پروکسی آن را پیش از اتصال روی QNetworkProxy::NoProxy تنظیم کنید.