var options = new ParallelOptions
{
    MaxDegreeOfParallelism = 8,
    CancellationToken = cancellationToken
};
await Parallel.ForEachAsync(endpoints, options,
    async (endpoint, token) =>
    {
        var result = await ProbeAsync(endpoint, target, token);
        observations.Add(result);
    });

გამოიყენეთ შეზღუდული მუშაკთა აუზი და არა ცალკე დავალება ყოველი ბოლო წერტილისთვის. დაშვებულ საჯარო სამიზნეებზე შემოწმებისთვის უფასო პროქსის სია გთავაზობთ კანდიდატურ სტრიქონებს; ზონდის აწყობისას შეინარჩუნეთ თითოეული ჩანაწერის პროტოკოლი. .NET-ის ეს დაგეგმვის ფრაგმენტი ვარაუდობს პროქსის გაცნობიერებულ ProbeAsync-ს და ნაკადებისთვის უსაფრთხო observations შემგროვებელს. რვა საილუსტრაციო ზღვარია და არა გაზომილი ოპტიმუმი. ზონდს კვლავ სჭირდება ლიმიტები თითო ცდაზე და მთელი სამუშაოს გაუქმება.

შეინახეთ ყოველი დასრულებული შედეგი მის შეყვანასთან ერთად, მაშინაც კი როცა დასრულების რიგი განსხვავებულია. ჩაწერეთ პროტოკოლი, ბოლო წერტილი, სამიზნე, მეთოდი, გასული დრო და შედეგი. კავშირის წარუმატებლობა, პროქსიში შესვლის უარი, უარყოფილი CONNECT და საიტიდან მიღებული პასუხი სხვადასხვა დაკვირვებაა.

TCP პორტის გახსნა არ ამტკიცებს პროქსისთან მოლაპარაკებას. პროქსის მისამართის საიტად ჩამოტვირთვა ასევე განსხვავდება მისი სამიზნის მოთხოვნისთვის გამოყენებისგან.

აირჩიეთ სამიზნე და მეთოდი საჭირო შესაძლებლობის მიხედვით. HEAD-მა შეიძლება დაზოგოს სხეულის ტრაფიკი, მაგრამ არ ამტკიცებს, რომ GET სასარგებლო შიგთავსს აბრუნებს; საიტმა შეიძლება ერთი უარყოს და მეორეს დაუშვას. HTTPS ამატებს CONNECT-სა და დანიშნულების TLS-ს, რომლებიც ჩვეულებრივ HTTP-ში არ არის. გასვლის მისამართი დანიშნულების მხარის კიდევ ერთი დაკვირვებაა, კონფიგურირებული შესასვლელისგან დამოუკიდებელი.

შეზღუდული სამუშაო ხელს უშლის შემმოწმებელს, რომ ვერ შეძლოს საკუთარი სოკეტების, მეხსიერების ან დამგეგმავის გამოფიტვა მარშრუტის შეფასებამდე. ეტაპობრივი შედეგი სასარგებლო რჩება შერჩევის პოლიტიკისთვის იმის მტკიცების გარეშე, თითქოს ერთი წარმატებული დანიშნულება ბოლო წერტილს საყოველთაოდ კარგს ხდის.

დაკავშირებული სტატიები