From 3c38fe23e88bd1392f81d247f522e759bcea6b61 Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Thu, 22 Jan 2026 21:34:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E4=BB=A3=E7=90=86=E6=94=AF=E6=8C=81):=20?= =?UTF-8?q?=E4=B8=8D=E9=80=9A=E8=BF=87=E5=8D=8F=E8=AE=AE=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E8=A7=A3=E6=9E=90SOCKS5=E6=9C=8D=E5=8A=A1=E5=99=A8=E5=9C=B0?= =?UTF-8?q?=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- probe.go | 2 +- probe_socks5.go | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/probe.go b/probe.go index 511f804..96c81b7 100644 --- a/probe.go +++ b/probe.go @@ -52,7 +52,7 @@ func main() { var err error if s5 != "" { fmt.Printf("通过代理探测: %s\n", s5) - conn, err = DialSocks5UDP(s5, network, to) + conn, err = DialSocks5UDP(s5, to) if err != nil { fmt.Printf("连接代理失败: %v\n", err) return diff --git a/probe_socks5.go b/probe_socks5.go index bf68278..b32aa41 100644 --- a/probe_socks5.go +++ b/probe_socks5.go @@ -176,9 +176,9 @@ func (c *socks5PacketConn) SetWriteDeadline(t time.Time) error { } // DialSocks5UDP 建立SOCKS5 UDP关联 -// 入参: proxyAddr 代理服务器地址, network 网络协议(udp/udp4/udp6), timeout 超时时间 +// 入参: proxyAddr 代理服务器地址, timeout 超时时间 // 返回: conn 数据包连接, err 连接错误 -func DialSocks5UDP(proxyAddr, network string, timeout time.Duration) (net.PacketConn, error) { +func DialSocks5UDP(proxyAddr string, timeout time.Duration) (net.PacketConn, error) { var host string if strings.Contains(proxyAddr, "://") { u, err := url.Parse(proxyAddr) @@ -189,14 +189,7 @@ func DialSocks5UDP(proxyAddr, network string, timeout time.Duration) (net.Packet } else { host = proxyAddr } - tcpNetwork := "tcp" - switch network { - case "udp4": - tcpNetwork = "tcp4" - case "udp6": - tcpNetwork = "tcp6" - } - conn, err := net.DialTimeout(tcpNetwork, host, timeout) + conn, err := net.DialTimeout("tcp", host, timeout) if err != nil { return nil, err } @@ -280,7 +273,13 @@ func DialSocks5UDP(proxyAddr, network string, timeout time.Duration) (net.Packet } conn.SetDeadline(time.Time{}) relayAddr := &net.UDPAddr{IP: relayIP, Port: relayPort} - lConn, err := net.ListenUDP(network, nil) + listenNetwork := "udp" + if relayIP.To4() != nil { + listenNetwork = "udp4" + } else { + listenNetwork = "udp6" + } + lConn, err := net.ListenUDP(listenNetwork, nil) if err != nil { conn.Close() return nil, err