直接show代码,是不是非常简单。
package mainimport "github.com/armon/go-socks5"func main() {conf := &socks5.Config{}server, err := socks5.New(conf)if err != nil {panic(err)}if err := server.ListenAndServe("tcp", ":8000"); err != nil {panic(err)}}
Go网络编程真是让人爽到极致。分析一下开源库的实现,非常简单,在解析socks协议后,直接数据对拷。
# 将socks上游数据直接拷贝给客户端go proxy(target, req.bufConn, errCh) # 将客户端数据直接拷贝给socks上游服务go proxy(conn, target, errCh)
# 拷贝数据具体实现func proxy(dst io.Writer, src io.Reader, errCh chan error) { _, err := io.Copy(dst, src) if tcpConn, ok := dst.(closeWriter); ok { tcpConn.CloseWrite() } errCh <- err}
Go语言在网络编程的接口抽象是目前我个人感觉最好的一门编程语言。
本文地址:https://gpu.xuandashi.com/7348.html,转载请说明来源于:渲大师
声明:本站部分内容来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。分享目的仅供大家学习与参考,不代表本站立场!