Bọ́tìnì Fagilé gbọ́dọ̀ dá ìsáwárí náà dúró. Bí àyẹ̀wò proxy kọ̀ọ̀kan bá mú ìfagilé náà tí ó sì padà bọ̀ sípò, ìyípo òde yóò kàn lọ sí proxy tó kàn. Nígbà náà ojú-ìwé yóò dà bí ẹni pé Fagilé kò ṣe nkankan.

Nínú .NET WinForms òde òní, pa orísun kan mọ́ gẹ́gẹ́ bí pápá fọ́ọ̀mù kí o sì jẹ́ kí ìfagilé dé ọ̀dọ̀ olùṣàkóso ìṣẹ̀lẹ̀:

private CancellationTokenSource? activeRun;

private async void startButton_Click(object sender, EventArgs e)
{
    if (activeRun is not null) return;
    using var run = new CancellationTokenSource();
    activeRun = run;
    startButton.Enabled = false;
    try
    {
        foreach (Uri proxy in configuredProxies)
        {
            run.Token.ThrowIfCancellationRequested();
            await CheckProxyAsync(proxy, run.Token);
        }
        statusLabel.Text = "Finished";
    }
    catch (OperationCanceledException) when (run.IsCancellationRequested)
    {
        statusLabel.Text = "Stopped";
    }
    finally
    {
        activeRun = null;
        startButton.Enabled = true;
    }
}

private void cancelButton_Click(object sender, EventArgs e)
    => activeRun?.Cancel();

configuredProxies ni àkọ́kọ́ URI proxy tí ohun-èlò náà ti ṣàyẹ̀wò tẹ́lẹ̀. Àwọn ìlà láti àkọ́kọ́ proxy ọ̀fẹ́ lè jẹ́ kí àyẹ̀wò àfojúsùn gbangba tí a gbà láyè lọ. Pa ìlànà mọ́ kí o sì lo àwọn irú tí olùṣàkóso yìí ń gbà nìkan. UI ń dúró de ìgbésẹ̀ kọ̀ọ̀kan, nítorí náà ìyípo ìfiránṣẹ́ ṣì wà lọ́fẹ̀ẹ́ láti gba títẹ Fagilé.

Gbe tọ́kẹ̀nì dé nẹ́tíwọ́kì

Àyẹ̀wò kọ̀ọ̀kan gbọ́dọ̀ gba tọ́kẹ̀nì yẹn. Àyẹ̀wò HTTP kúkúrú lè rí báyìí:

private async Task CheckProxyAsync(Uri proxy, CancellationToken token)
{
    using var handler = new HttpClientHandler
    {
        Proxy = new System.Net.WebProxy(proxy),
        UseProxy = true
    };
    using var client = new HttpClient(handler);
    using var response = await client.GetAsync(
        probeUri, HttpCompletionOption.ResponseHeadersRead, token);
    response.EnsureSuccessStatusCode();
    string body = await response.Content.ReadAsStringAsync(token);
    RecordResult(proxy, body);
}

probeUri àti RecordResult jẹ́ ti olùṣàyẹ̀wò tó wà tẹ́lẹ̀. Pa ààlà ìwọ̀n ìdáhùn tó yẹ mọ́ àti àkókò ìdúró fún ibi-ìparí yìí. Olùṣàyẹ̀wò iṣẹ́-ṣíṣe lè tún àwọn oníbàárà lò nípasẹ̀ ipa-ọ̀nà; àjẹkù náà fi ibi tí ìfagilé ń lọ hàn, kì í ṣe àpẹẹrẹ àdàkọ adágún-ìsopọ̀.

Bí ó bá yẹ kí a kọ àwọn proxy tó kùnà mọ́ kí a sì fojú fo wọ́n, mú àwọn ìkùnà nẹ́tíwọ́kì tí a retí yí àyẹ̀wò kọ̀ọ̀kan ká. Jẹ́ kí ìfagilé ìsáwárí jáde lọ sí olùṣàkóso òde. Fún àwọn àyẹ̀wò alájọṣepọ̀, pín tọ́kẹ̀nì ìsáwárí pẹ̀lú gbogbo òṣìṣẹ́ kí o sì dúró de ìparí wọn kí o tó gbà ìsáwárí mìíràn láyè.

Àwọn àpilẹ̀kọ tó jọra