Socket.SendTimeout באגרענעצט נישט אַ פּראָקסי פֿאַרבינדונג פּרוּוון
באַגרענעץ דעם פּראָקסי פּאָרט טעסט בײַם אויסשטעלן דער פֿאַרבינדונג אַנשטאָט צו שטעלן אַ timeout וואָס גילט נאָר פֿאַר שיקן דאַטן.
אַ פּראָקסי פּרוּווער שטעלט SendTimeout = 200, רופֿט Connect און וואַרט פֿיל לענגער ווי ערוואַרט. דער timeout הענגט אויף אַן אָפּעראַציע וואָס דער פּרוּווער האָט נאָך נישט דערגרייכט.
Socket.SendTimeout קאָנטראָלירט סינכראָנע שיקונגען. עס גיט נישט קיין 200 ms טערמין צו אַ סינכראָנער פֿאַרבינדונג פּרוּוון. צולייגן אַ שלאָף פֿאַר Connect לייגט נאָר צו נאָך אַ פֿאַרוואָג.
אַנולירט די אָפּעראַציע וואָס וואַרט
אויף אַ מאָדערנעם .NET ציל וואָס שטעלט צו דעם אַנולירבלעכן overload, קען אַן אַסינכראָנער פּרוּוון אָנווענדן זיין בודזשעט אויף אויסשטעלן דער פֿאַרבינדונג:
using var budget = new CancellationTokenSource(TimeSpan.FromSeconds(2));
using var client = new TcpClient();
await client.ConnectAsync(proxyHost, proxyPort, budget.Token);
דער פֿראַגמענט געהערט אין אַן async מעטאָד, מיט דעם פּראָקסי האָסט און פּאָרט צוגעשטעלט פֿון אַרויסרופֿער; אַ פּובליקער קאַנדידאַט פֿון אַ פּראָקסי ליסטע קען צושטעלן די צוויי אַרייַנגאַנגען. באַהאַנדלט אַנולירונג באַזונדער פֿון אַ socket פֿעלער אויב דער פּרוּווער מעלדט די סיבות פֿאַר דורכפֿאַל. אַוועקוואַרפֿן דעם קליענט פֿאַרהיט אויך פֿאַרענדיקטע פּרוּוון פֿון אָנזאַמלען sockets.
עלטערע .NET Framework קאָד האָט נישט יעדער מאָדערנער overload. ניצט אַ געשטיצטע אַסינכראָנע פֿאַרבינדונג אָרדענונג און פֿאַרמאַכט דעם socket בפֿירוש ווען איר פֿאַרלאָזט דעם פּרוּוון. בלויז אָפּשטעלן אײַער וואַרטן באַווײַזט נישט אַז אַן אונטערליגנדיקע אָפּעראַציע האָט זיך אָפּגעשטעלט.
דאָס גרינע רעזולטאַט איז נאָך אַ קליין רעזולטאַט
אַ געראָטענע TCP פֿאַרבינדונג באַווײַזט אַז דער קליענט האָט דערגרייכט אַ צוהערנדיקן ענדפּונקט. עס האָט נישט אויסגעהאַנדלט SOCKS, זיך נישט אויטענטיפֿיצירט צו אַן HTTP פּראָקסי, נישט געעפֿנט CONNECT און נישט באַקומען די געוואונטשענע וועבזײַטל ענטפֿער.
גיט יענע שפּעטערדיקע סטאַדיעס זייער אייגענע באַגרענעצטע באַהאַנדלונג, אָדער פֿירט דורך זיי אַ באַוואוסטן אַלגעמיינעם טערמין. אַנדערש קען דער פֿאַרריכטעטער פֿאַרבינדונג טימער אַרבעטן פּערפֿעקט בשעת דער פּרוּווער פֿאַרברענגט נאָך אַ מינוט וואַרטנדיק אויף אַ פּראָקסי handshake.