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 ئۈچۈن يەنە بىر مىنۇت سەرپ قىلىدۇ.