Jooji dhammaan socodka hubinta proxy-ga WinForms
Hayso hal isha joojinta socodka hubinta proxy-ga WinForms, faafi joojinta shaqada HTTP oo jooji horumarka liiska.
Badhanka Jooji waa inuu joojiyo socodka. Haddii hubin kasta oo proxy ah uu qabto joojinta oo si caadi ah u soo noqdo, wareegga dibadda wuxuu si fudud u gudbaa proxyga xiga. Markaas shaashaddu waxay u ekaanaysaa sidii Jooji waxba ma uusan qaban.
WinForms .NET casriga ah, hayso hal isha oo ah goob foom oo u ogolow joojinta inay gaarto maareeyaha dhacdada:
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 waa liiska URI proxy ee barnaamijku horay u falanqeeyay. Safafka ka socda liiska proxy-ga bilaashka ah waxay quudin karaan hubin la oggolaaday oo bartilmaameed dadweyne ah; hayso borotokoolka oo isticmaal kaliya noocyada maareeyahanu taageero. UI waxay sugtaa hawl kasta, sidaas darteed wareegga fariinta ayaa xor u ah inuu helo gujista joojinta.
U qaad tokenka shabakadda
Hubinta gaarka ah waa inay aqbalaan tokenkaas. Hubin HTTP oo la gaabiyay waxay u ekaan kartaa sidan:
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 iyo RecordResult waxay ka tirsan yihiin hubiyaha jira. Hayso xad ku habboon cabbirka jawaabta iyo waqti-go'an bartaas. Hubiyaha wax-soo-saarka wuxuu dib u isticmaali karaa macaamiisha waddo kasta; qaybtu waxay muujinaysaa halka joojintu socoto, ma aha naqshad barkada xiriirka.
Haddii proxy-yada guuldarraystay la diiwaangeliyo oo la boodo, qabo cilladaha shabakadda ee la filayo agagaarka hubinta gaarka ah. U ogolow joojinta socodka inay u baxdo maareeyaha dibadda. Hubinno isku mid ah, wadaag tokenka socodka shaqaale kasta oo sug dhammaystirkooda ka hor inta aan la oggolaan socod kale.