freedomkk-qfeng / windows-agent

Apache License 2.0
120 stars 46 forks source link

发现一个端口监听的bug,windows可以对不同的网卡,监听同个端口 #7

Closed zscboy closed 6 years ago

zscboy commented 6 years ago

比如 服务器可以监听127.0.0.1:4000, 0.0.0.0:4000

func IsTCPPortV4Used(port int64) bool { if port < minTCPPort || port > maxTCPPort { return false } connString := "127.0.0.1:" + strconv.FormatInt(port, 10) conn, err := net.Listen("tcp", connString) log.Println(connString, conn, err) if err != nil { log.Println("err:", err) return true } conn.Close() return false }

但是这个检查只对127.0.0.1 起作用,对0.0.0.0 不起作用 用的是golang 1.9

a965331268 commented 6 years ago

fix func IsTCPPortV4Used(port int64) bool { if port < minTCPPort || port > maxTCPPort { return false } connString := ":" + strconv.FormatInt(port, 10) conn, err := net.Listen("tcp4", connString) log.Println(connString, conn, err) if err != nil { return true } conn.Close() return false }

func IsTCPPortV6Used(port int64) bool { if port < minTCPPort || port > maxTCPPort { return false } connString := "[::]:" + strconv.FormatInt(port, 10) conn, err := net.Listen("tcp6", connString) log.Println(connString, conn, err) if err != nil { return true } conn.Close() return false }

freedomkk-qfeng commented 6 years ago

1.0.3 已经 fix 该问题