github.com/zhiqiangxu/util@v0.0.0-20230112053021-0a7aee056cd5/port/tcp.go (about)

     1  package port
     2  
     3  import "net"
     4  
     5  // ChooseTCP returns a useable tcp port
     6  func ChooseTCP() (p uint16, err error) {
     7  	l, err := net.Listen("tcp", ":0")
     8  	if err != nil {
     9  		return
    10  	}
    11  
    12  	p = uint16(l.Addr().(*net.TCPAddr).Port)
    13  
    14  	err = l.Close()
    15  	return
    16  }
    17  
    18  // ListenTCP returns a new tcp listener
    19  func ListenTCP() (l net.Listener, err error) {
    20  	l, err = net.Listen("tcp", ":0")
    21  	return
    22  }