Bar mahallin Go ya soke kafa haɗin SOCKS
Yi amfani da fasalin ContextDialer da aka fitar don hanyar SOCKS ta Go kuma bambanta soke haɗi da ƙayyadaddun lokaci akan zirga-zirgar aikace-aikacen daga baya.
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)
}A cikin fakitin cibiyar sadarwa na Go da ke akwai, yi amfani da shigo da context, errors, net, time da x/net/proxy. Hujjar nil ba ta zaɓar wani shaidar SOCKS. Don manufa ta jama'a a kan hanyar wakili ta jama'a da aka yarda, jerin wakilan SOCKS5 yana ba da 'yan takara don ƙarshen dialer.
Tabbacin proxy.ContextDialer da aka fitar yana sa aiwatarwa marasa tallafi su kasa a fili. Duba dogaro da aka tura maimakon ambaton nau'in dialer na ciki ko fara goroutine mai toshewa wanda mai kira ba zai iya sarrafawa ba.
Mahallin yana mulkin kafa haɗi. Da zarar an mayar da net.Conn, yi amfani da ƙayyadaddun karatu/rubutu da suka dace ko ƙayyadaddun buƙatu na matsayi mafi girma. Lokacin haɗin dialer na tushe da babban kasafin aikace-aikace iyaka ne daban-daban.
Don haɗakar jigilar HTTP, kiyaye halin TLS da HTTP na yau da kullum. Ruwan SOCKS mai sane da mahalli da aka mayar shine mika wa jigilar, ba amsa ba ko manufar rayuwa ga duk bytes na gaba.