Sgrìobhas frithealaiche SOCKS5 ceithir beatan air leth, agus cha bhith an cleachdaiche ag obair gus an tèid na sgrìobhaidhean sin a chur còmhla. Faodaidh cur còmhla an ùine atharrachadh, ach chan eil TCP fhathast a' gealltainn aon leughadh airson gach sgrìobhadh.

Feumaidh am fear-cleachdaidh parsair freagairt. Às dèidh taghadh modha agus dearbhadh sam bith a tha a dhìth, tòisicheas freagairt àithne SOCKS5 le ceithir beatan: tionndadh, toradh, beit glèidhte agus seòrsa seòlaidh. Tha am faid a tha air fhàgail an eisimeil air an t-seòrsa seòlaidh sin.

Faodaidh parsair .NET 7+ nach fheum ach freagairt CONNECT shoirbheachail ithe cleachdadh:

static async Task ReadConnectReply(Stream stream, CancellationToken ct)
{
    byte[] prefix = new byte[4];
    await stream.ReadExactlyAsync(prefix, ct);
    if (prefix[0] != 5 || prefix[2] != 0)
        throw new IOException("Invalid SOCKS5 reply");
    if (prefix[1] != 0)
        throw new IOException($"SOCKS5 request failed: {prefix[1]}");

    int remaining;
    switch (prefix[3])
    {
        case 1: remaining = 4 + 2; break;
        case 4: remaining = 16 + 2; break;
        case 3:
            byte[] length = new byte[1];
            await stream.ReadExactlyAsync(length, ct);
            remaining = length[0] + 2;
            break;
        default:
            throw new IOException("Unknown SOCKS5 address type");
    }
    await stream.ReadExactlyAsync(new byte[remaining], ct);
}

Is e an dà bheat mu dheireadh am port ceangailte. Feumaidh IPv4 ceithir beatan; feumaidh IPv6 sia-deug; bidh beit faid aig seòladh fearainn roimh an ainm.

Thoir seachad comharra cuir-à-mach leis an ùine cho-rèiteachaidh a tha san amharc. Làimhsicheas ReadExactlyAsync leughaidhean fa leth nas giorra agus tilgidh e eisgeachd nuair a chrìochnaicheas an t-sruth roimh an fhaid a chaidh iarraidh. Ma dh'fhàillicheas e, thoir air falbh an ceangal a dh'fhàillich tro shlighe glanaidh an neach-seilbh aige.

Ma shoirbhicheas e, stad aig crìoch na freagairt. Buinidh na beatan às a dhèidh do phròtacal a' chinn-uidhe. Feumaidh leughadh tuairmeasach nas motha na beatan a bharrachd a ghlèidheadh seach toiseach sruth na h-aplacaid a thilgeil air falbh.

Artaigilean co-cheangailte