پراکسی جانچنے والا 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 خرابی سے الگ سنبھالیں۔ کلائنٹ کو dispose کرنا مکمل شدہ جانچوں کو socket جمع کرنے سے بھی روکتا ہے۔

پرانے .NET Framework کوڈ میں ہر جدید overload نہیں ہوتا۔ معاون async کنکشن ترتیب استعمال کریں اور کوشش چھوڑتے وقت socket کو واضح طور پر بند کریں۔ صرف اپنا انتظار روکنا یہ ثابت نہیں کرتا کہ کوئی بنیادی کارروائی رک گئی ہے۔

سبز نتیجہ اب بھی چھوٹا نتیجہ ہے

کامیاب TCP کنکشن ثابت کرتا ہے کہ یہ کلائنٹ سننے والے آخری نقطے تک پہنچ گیا ہے۔ اس نے SOCKS پر بات چیت نہیں کی، HTTP پراکسی پر تصدیق نہیں کی، CONNECT نہیں کھولا اور نہ مطلوبہ ویب سائٹ کا جواب حاصل کیا۔

ان بعد کے مراحل کو ان کا اپنا محدود انتظام دیں، یا ان کے ذریعے جان بوجھ کر مجموعی مہلت گزاریں۔ ورنہ مرمت شدہ کنکشن ٹائمر مکمل طور پر کام کر سکتا ہے جبکہ جانچنے والا پراکسی handshake کے انتظار میں ایک اور منٹ گزارتا ہے۔

متعلقہ مضامین