ஒரு ப்ராக்ஸி சரிபார்ப்பான் SendTimeout = 200 அமைத்து, Connect அழைத்து, எதிர்பார்த்ததை விட மிக நீண்ட நேரம் காத்திருக்கிறது. நேர வரம்பு சரிபார்ப்பான் இன்னும் அடையாத ஒரு செயல்பாட்டுடன் இணைக்கப்பட்டுள்ளது.

Socket.SendTimeout ஒத்திசைவு அனுப்புதல்களைக் கட்டுப்படுத்துகிறது. இது ஒத்திசைவு இணைப்பு முயற்சிக்கு 200 ms காலக்கெடுவை வழங்காது. Connect-க்கு முன் தூக்கம் சேர்ப்பது மற்றொரு தாமதத்தை மட்டுமே சேர்க்கிறது.

காத்திருக்கும் செயல்பாட்டை ரத்து செய்யுங்கள்

ரத்து செய்யக்கூடிய overload வழங்கும் நவீன .NET இலக்கில், ஒரு async சரிபார்ப்பு அதன் பட்ஜெட்டை இணைப்பு நிறுவலுக்குப் பயன்படுத்தலாம்:

using var budget = new CancellationTokenSource(TimeSpan.FromSeconds(2));
using var client = new TcpClient();
await client.ConnectAsync(proxyHost, proxyPort, budget.Token);

இந்தத் துண்டு async முறையில் அமைகிறது, ப்ராக்ஸி ஹோஸ்ட் மற்றும் போர்ட்டை அழைப்பவர் வழங்குகிறார்; ப்ராக்ஸி பட்டியலில் இருந்து ஒரு பொது வேட்பாளர் அந்த இரண்டு உள்ளீடுகளையும் வழங்க முடியும். சரிபார்ப்பான் தோல்விக்கான காரணங்களைத் தெரிவித்தால் ரத்துசெய்தலை socket பிழையிலிருந்து தனியாகக் கையாளுங்கள். client-ஐ dispose செய்வது முடிந்த சரிபார்ப்புகள் socket குவிவதையும் தடுக்கிறது.

பழைய .NET Framework குறியீட்டில் அனைத்து நவீன overload-களும் இல்லை. ஆதரிக்கப்படும் async இணைப்பு அமைப்பைப் பயன்படுத்தி, முயற்சியைக் கைவிடும்போது socket-ஐ வெளிப்படையாக மூடுங்கள். உங்கள் காத்திருப்பை நிறுத்துவது மட்டும் அடிப்படை செயல்பாடு நின்றுவிட்டதை நிரூபிக்காது.

பச்சை முடிவு இன்னும் சிறிய முடிவே

வெற்றிகரமான TCP இணைப்பு இந்த client கேட்கும் முனைப்புள்ளியை அடைந்ததை நிரூபிக்கிறது. அது SOCKS பேச்சுவார்த்தை செய்யவில்லை, HTTP ப்ராக்ஸியில் அங்கீகரிக்கப்படவில்லை, CONNECT திறக்கவில்லை அல்லது விரும்பிய இணையதள பதிலைப் பெறவில்லை.

அந்தப் பிந்தைய நிலைகளுக்கு அவற்றின் சொந்த வரம்பிடப்பட்ட கையாளுதலைக் கொடுங்கள், அல்லது அவற்றின் வழியாக வேண்டுமென்றே ஒட்டுமொத்த காலக்கெடுவை கடத்துங்கள். இல்லையேல் சரிசெய்யப்பட்ட இணைப்பு டைமர் முழுமையாக வேலை செய்யலாம், அதே நேரம் சரிபார்ப்பான் ப்ராக்ஸி handshake-க்காக இன்னொரு நிமிடம் செலவிடுகிறது.

தொடர்புடைய கட்டுரைகள்