Socraíonn seiceálaí seachfhreastalaí SendTimeout = 200, glaonn sé Connect agus fanann sé i bhfad níos faide ná mar a bhíothas ag súil leis. Tá an teorainn ama ceangailte le hoibríocht nach bhfuil an seiceálaí sroichte aici fós.

Rialaíonn Socket.SendTimeout seoltaí sioncrónacha. Ní thugann sé spriocdháta 200 ms d'iarracht ceangail shioncrónach. Ní chuireann codladh roimh Connect ach moill eile leis.

Cealaigh an oibríocht atá ag fanacht

Ar sprioc nua-aimseartha .NET a sholáthraíonn an t-ualach cealaithe, is féidir le tástáil asincrónach a buiséad a chur i bhfeidhm ar bhunú an cheangail:

using var budget = new CancellationTokenSource(TimeSpan.FromSeconds(2));
using var client = new TcpClient();
await client.ConnectAsync(proxyHost, proxyPort, budget.Token);

Baineann an blúire le modh async, agus an t-óstach agus an port seachfhreastalaí á soláthar ag an nglaoiteoir; is féidir le hiarrthóir poiblí ó liosta seachfhreastalaithe an dá ionchur sin a sholáthar. Láimhseáil an cealú ar leithligh ó earráid soicéid má thuairiscíonn an seiceálaí cúiseanna teipe. Coisceann scaoileadh an chliaint freisin tástálacha críochnaithe ó shoicéid a charnadh.

Níl gach ualach nua-aimseartha ag seanchód .NET Framework. Úsáid socrú ceangail asincrónach a bhfuil tacaíocht aige agus dún an soicéad go sainráite nuair a thréigeann tú an iarracht. Ní chruthaíonn stopadh do fhanachta amháin go bhfuil oibríocht bhunúsach stoptha.

Is toradh beag fós é an toradh glas

Cruthaíonn ceangal TCP rathúil gur shroich an cliant seo críochphointe atá ag éisteacht. Ní dhearna sé SOCKS a idirbheartaíocht, ní dhearna sé fíordheimhniú le seachfhreastalaí HTTP, níor oscail sé CONNECT ná ní bhfuair sé an freagra suímh ghréasáin a bhí ag teastáil.

Tabhair a láimhseáil theoranta féin do na céimeanna níos déanaí sin, nó tabhair spriocdháta iomlán d'aon ghnó tríothu. Seachas sin féadfaidh an t-amadóir ceangail deisithe oibriú go foirfe agus an seiceálaí ag caitheamh nóiméid eile ag fanacht le croithláimh seachfhreastalaí.

Ailt ghaolmhara