Прокси шалгагч SendTimeout = 200 тохируулж, Connect дуудаж, хүлээгдэж байснаас хамаагүй удаан хүлээнэ. Timeout нь шалгагч хараахан хүрээгүй үйлдэлд холбогдсон байна.

Socket.SendTimeout синхрон илгээлтийг удирддаг. Энэ нь синхрон холболтын оролдлогод 200 ms хугацаа өгөхгүй. Connect-ийн өмнө унтах нь зөвхөн өөр нэг саатал нэмнэ.

Хүлээж буй үйлдлийг цуцална уу

Цуцлагдах боломжтой overload санал болгодог орчин үеийн .NET зорилт дээр асинхрон шалгалт төсвөө холболт үүсгэхэд хэрэглэж болно:

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

Хэсэг нь async аргад хамаарах бөгөөд прокси хост болон портыг дуудагч өгнө; прокси жагсаалтаас гарсан нийтийн нэр дэвшигч тэр хоёр оролтыг өгч чадна. Хэрэв шалгагч бүтэлгүйтлийн шалтгааныг мэдээлбэл, цуцлалтыг socket алдаанаас тусад нь шийдвэрлээрэй. Клиентийг dispose хийх нь дууссан шалгалтууд socket хуримтлуулахаас сэргийлнэ.

Хуучин .NET Framework код бүх орчин үеийн overload-гүй. Дэмжигдсэн async холболтын зохицуулалт ашиглаж, оролдлогоос татгалзахдаа socket-ийг тодорхой хаагаарай. Зөвхөн хүлээлтээ зогсоох нь доод үйлдэл зогссоныг нотлохгүй.

Ногоон үр дүн одоо ч жижиг үр дүн

Амжилттай TCP холболт нь энэ клиент сонсож буй төгсгөлийн цэгт хүрснийг нотолно. Энэ нь SOCKS-оор хэлэлцээгүй, HTTP проксид баталгаажуулаагүй, CONNECT нээгээгүй, хүссэн вэбсайтын хариултыг аваагүй.

Тэр дараагийн үе шатуудад өөрсдийн хязгаарлагдмал зохицуулалтыг өг, эсвэл тэдгээрээр дамжуулан санаатай нийт хугацаа дамжуул. Эс бөгөөс зассан холболтын таймер төгс ажиллаж байтал шалгагч прокси handshake хүлээхэд дахин нэг минут зарцуулна.

Холбоотой нийтлэлүүд