Ένας ελεγκτής διαμεσολαβητή ορίζει SendTimeout = 200, καλεί Connect και περιμένει πολύ περισσότερο από το αναμενόμενο. Το timeout συνδέεται με μια λειτουργία στην οποία ο ελεγκτής δεν έχει φτάσει ακόμη.

Το Socket.SendTimeout ελέγχει τις σύγχρονες αποστολές. Δεν δίνει σε μια σύγχρονη απόπειρα σύνδεσης προθεσμία 200 ms. Η προσθήκη ύπνου πριν από το Connect προσθέτει μόνο άλλη καθυστέρηση.

Ακυρώστε τη λειτουργία που περιμένει

Σε ένα σύγχρονο στόχο .NET που παρέχει την ακυρώσιμη υπερφόρτωση, ένας ασύγχρονος έλεγχος μπορεί να εφαρμόσει τον προϋπολογισμό του στην εγκατάσταση της σύνδεσης:

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

Το απόσπασμα ανήκει σε μια async μέθοδο, με τον κεντρικό υπολογιστή και τη θύρα του διαμεσολαβητή να παρέχονται από τον καλούντα· ένας δημόσιος υποψήφιος από μια λίστα διαμεσολαβητών μπορεί να παρέχει αυτές τις δύο εισόδους. Χειριστείτε την ακύρωση ξεχωριστά από ένα σφάλμα υποδοχής αν ο ελεγκτής αναφέρει λόγους αποτυχίας. Η απόρριψη του πελάτη εμποδίζει επίσης τους ολοκληρωμένους ελέγχους να συσσωρεύουν υποδοχές.

Ο παλαιότερος κώδικας .NET Framework δεν έχει κάθε σύγχρονη υπερφόρτωση. Χρησιμοποιήστε μια υποστηριζόμενη ασύγχρονη διάταξη σύνδεσης και κλείστε ρητά την υποδοχή όταν εγκαταλείπετε την απόπειρα. Η απλή διακοπή της αναμονής σας δεν αποδεικνύει ότι μια υποκείμενη λειτουργία σταμάτησε.

Το πράσινο αποτέλεσμα είναι ακόμη ένα μικρό αποτέλεσμα

Μια επιτυχής σύνδεση TCP αποδεικνύει ότι αυτός ο πελάτης έφτασε σε ένα τελικό σημείο που ακούει. Δεν διαπραγματεύτηκε SOCKS, δεν πιστοποιήθηκε σε διαμεσολαβητή HTTP, δεν άνοιξε CONNECT ούτε έλαβε την επιθυμητή απόκριση του ιστότοπου.

Δώστε σε εκείνα τα μεταγενέστερα στάδια τη δική τους περιορισμένη διαχείριση, ή μεταφέρετε μέσα από αυτά μια σκόπιμη συνολική προθεσμία. Διαφορετικά το επιδιορθωμένο χρονόμετρο σύνδεσης μπορεί να λειτουργεί τέλεια ενώ ο ελεγκτής περνά άλλο ένα λεπτό περιμένοντας μια χειραψία διαμεσολαβητή.

Σχετικά άρθρα