getFreePort.go

    1. package main
    2. import (
    3. "log"
    4. "net"
    5. )
    6. // 取得一个未被占用的随机端口
    7. func GetFreePort() (int, error) {
    8. addr, err := net.ResolveTCPAddr("tcp", "localhost:0")
    9. if err != nil {
    10. return 0, err
    11. }
    12. l, err := net.ListenTCP("tcp", addr)
    13. if err != nil {
    14. return 0, err
    15. }
    16. defer l.Close()
    17. return l.Addr().(*net.TCPAddr).Port, nil
    18. }
    19. func main() {
    20. port, _ := GetFreePort()
    21. log.Println(port)
    22. }