func dialViaSOCKS(ctx context.Context, destination string) (net.Conn, error) {
    dialer, err := proxy.SOCKS5(
        "tcp",
        "127.0.0.1:1080",
        nil,
        &net.Dialer{Timeout: 5 * time.Second},
    )
    if err != nil {
        return nil, err
    }
    contextDialer, ok := dialer.(proxy.ContextDialer)
    if !ok {
        return nil, errors.New("SOCKS dialer lacks context support")
    }
    return contextDialer.DialContext(ctx, "tcp", destination)
}

Laistigh de phacáiste líonrú Go atá ann cheana, úsáid na hiompórtálacha context, errors, net, time agus x/net/proxy. Ní roghnaíonn an argóint nil aon dintiúirí SOCKS. Chun ceann scríbe poiblí ar bhealach seachfhreastalaí poiblí ceadaithe, cuireann an liosta seachfhreastalaithe SOCKS5 iarrthóirí ar fáil do chríochphointe an dialer.

Cuireann an dearbhú easpórtáilte proxy.ContextDialer iachall ar fheidhmiúcháin nach dtacaítear leo teip go follasach. Seiceáil an spleáchas atá suiteáilte seach cineál dialer inmheánach a ainmniú nó goroutine bacach a thosú nach féidir leis an nglaoiteoir a bhainistiú.

Rialaíonn an comhthéacs bunú an naisc. Nuair a fhilltear net.Conn, cuir spriocdhátaí léitheoireachta/scríbhneoireachta nó spriocdhátaí iarratais ar leibhéal níos airde i bhfeidhm. Is teorainneacha éagsúla iad amshraith naisc bun-dialer agus buiséad iomlán feidhmchláir.

Le haghaidh comhtháthú iompair HTTP, coinnigh a ghnáth-iompar TLS agus HTTP. Is é an sruth SOCKS comhthéacsach a fhilltear an t-aistriú chuig an iompar, ní freagra ná polasaí saoil do gach beart ina dhiaidh sin.

Ailt ghaolmhara