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 ഡോക്യുമെന്റ് ചെയ്ത വെയ്റ്റ് മെത്തേഡുകൾ ഉപയോഗിക്കുക.
ഇതിന് Qt Network ആവശ്യമാണ്, widgets അടിസ്ഥാനമാക്കിയ GUI അല്ല. ഈ വ്യക്തമായ ക്രമീകരണം ഈ സോക്കറ്റിന് മാത്രമുള്ളതാണ്. മറ്റ് സോക്കറ്റുകൾക്ക് ആപ്ലിക്കേഷൻ ഡിഫോൾട്ടുകൾ നിലനിർത്താം അല്ലെങ്കിൽ മറ്റൊരു പ്രോക്സി തിരഞ്ഞെടുക്കാം. ഈ സോക്കറ്റ് നേരിട്ട് പോകാൻ, കണക്ട് ചെയ്യുന്നതിന് മുമ്പ് അതിന്റെ പ്രോക്സി തരം QNetworkProxy::NoProxy ആയി സെറ്റ് ചെയ്യുക.