Socket.SendTimeout avmarkar ikki eina proxy-sambandsroynd
Avmarka proxy-portrakan tá sambandið verður stovnað í staðin fyri at seta eina timeout, sum bert er galdandi fyri at senda dáta.
Ein proxy-kannari setur SendTimeout = 200, kallar Connect og bíðar nógv longur enn væntað. Timeout-in er knýtt at eini handling, sum kannarin ikki er komin at enn.
Socket.SendTimeout stýrir samstundis sendingum. Tað gevur ikki eini samstundis sambandsroynd eina freist á 200 ms. At leggja svøvn fyri Connect leggur bert eina aðra tøving afturat.
Strika ta bíðandi handlingina
Á einum nútímans .NET-máli, sum bjóðar ta strikanlegu yvirbyrðingina, kann ein async-kanning seta sítt fíggjarligt mark til sambandsstovnan:
using var budget = new CancellationTokenSource(TimeSpan.FromSeconds(2));
using var client = new TcpClient();
await client.ConnectAsync(proxyHost, proxyPort, budget.Token);
Brotstykkið hoyrir til eina async-hátt, har proxy-verturin og -porturin verða latin av kallaranum; ein almennur valmøguleiki úr eini proxy-lista kann lata hesar báðar inntøkurnar. Viðgerð strikingina skilt frá eini socket-villu, um kannarin boðar frá orsøkum til miseydnað. At sleppa klientinum forðar eisini fyri, at lidnar kanningar savna sockets.
Eldri .NET Framework-kota hevur ikki hvørja nútímans yvirbyrðing. Nýt eina stuðlaða async-sambandsfyriskipan og lat socketin opinbert aftur, tá tú gevst við royndini. Bert at steðga tínum bíðingi prógvar ikki, at ein undirliggjandi handling er steðgað.
Grøna úrslitið er framvegis eitt lítið úrslit
Eitt eydnað TCP-samband prógvar, at hesin klienturin náddi einum lurandi endapunkta. Tað hevur ikki samrátt um SOCKS, autentiserað seg ímóti einum HTTP-proxy, opnað CONNECT ella móttikið ynskta svar frá netsíðuni.
Lat teimum seinni stigunum sína egnu avmarkaðu viðgerð, ella ber eina viljandi samlaða freist gjøgnum tey. Annars kann hin umbøtti sambands-teljarin virka fullkomiliga, meðan kannarin brúkar eina aðra minutt at bíða eftir einum proxy-handshake.