Socket.SendTimeout प्रोक्सी जडान प्रयासलाई सीमित गर्दैन
डेटा पठाउनमा मात्र लागू हुने टाइमआउट सेट गर्नुको सट्टा जडान स्थापना गर्दा प्रोक्सी पोर्ट जाँचलाई सीमित गर्नुहोस्।
प्रोक्सी जाँचकर्ताले 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 पर्खन अर्को मिनेट बिताउँछ।