Socket.SendTimeout kò fi ààlà sí ìgbìyànjú ìsopọ́ proxy
Fi ààlà sí àyẹ̀wò ibudo proxy nígbà ìdásílẹ̀ ìsopọ́ dípò síṣètò àkókò tí ó kàn kan fífi dátà ránṣẹ́.
Olùyẹ̀wò proxy ń ṣètò SendTimeout = 200, ń pe Connect, ó sì ń dúró pẹ́ ju bí a ti retí lọ. Àkókò náà so mọ́ ìṣe kan tí olùyẹ̀wò kò tíì dé.
Socket.SendTimeout ń ṣàkóso ìfiránṣẹ́ amuṣiṣẹ́pọ̀. Kò fún ìgbìyànjú ìsopọ́ amuṣiṣẹ́pọ̀ ní àkókò 200 ms. Fífi oorun kún ṣáájú Connect kàn ń fi ìdádúró mìíràn kún.
Fagilé ìṣe tí ń dúró
Lórí àfojúsùn .NET òde òní tí ó ń pèsè overload tí a lè fagilé, àyẹ̀wò async lè lo ìpínwó rẹ̀ lórí ìdásílẹ̀ ìsopọ́:
using var budget = new CancellationTokenSource(TimeSpan.FromSeconds(2));
using var client = new TcpClient();
await client.ConnectAsync(proxyHost, proxyPort, budget.Token);
Apá yìí jẹ́ ti ọ̀nà async, pẹ̀lú olùgba proxy àti ibudo tí ẹni tí ń pè ń pèsè; olùdíje gbogbogbò láti àkójọ proxy lè pèsè àwọn ìwọlé méjì yẹn. Ṣàkóso ìfagilé lọ́tọ̀ sí àṣìṣe socket bí olùyẹ̀wò bá sọ àwọn ìdí ìkùnà. Pípa kọ̀ǹpútà kúrò tún ń dá àwọn àyẹ̀wò tí ó ti parí dúró láti kó socket jọ.
Kóòdù .NET Framework àtijọ́ kò ní gbogbo overload òde òní. Lo ètò ìsopọ́ async tí a ṣe àtìlẹ́yìn fún, kí o sì ti socket ní kedere nígbà tí o bá fi ìgbìyànjú náà sílẹ̀. Dídúró ìdúró rẹ nìkan kò fi hàn pé ìṣe abẹ́lẹ̀ ti dúró.
Èsì àwọ̀ ewé ṣì jẹ́ èsì kékeré
Ìsopọ́ TCP tí ó ṣàṣeyọrí fi hàn pé kọ̀ǹpútà yìí dé ibi ìparí tí ń gbọ́. Kò tíì ṣe ìdúnàádúrà SOCKS, kò tíì jẹ́rìí sí proxy HTTP, kò tíì ṣí CONNECT, kò sì tíì gba ìdáhùn ojú ìwé tí a fẹ́.
Fún àwọn ìpele tó tẹ̀lé yẹn ní ìṣàkóso lẹ́mọ̀ọ́kọ̀mọ́ tiwọn, tàbí gbé àkókò ìparí àpapọ̀ tí a mọ̀ọ́mọ̀ kọjá lára wọn. Bí bẹ́ẹ̀ kọ́, aago ìsopọ́ tí a tún ṣe lè ṣiṣẹ́ dáadáa nígbà tí olùyẹ̀wò ń lo ìṣẹ́jú mìíràn dúró de handshake proxy.