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