port.go 416 B

12345678910111213141516
  1. package tcp
  2. import (
  3. "github.com/xtls/xray-core/common"
  4. "github.com/xtls/xray-core/common/net"
  5. )
  6. // PickPort returns an unused TCP port in the system. The port returned is highly likely to be unused, but not guaranteed.
  7. func PickPort() net.Port {
  8. listener, err := net.Listen("tcp4", "127.0.0.1:0")
  9. common.Must(err)
  10. defer listener.Close()
  11. addr := listener.Addr().(*net.TCPAddr)
  12. return net.Port(addr.Port)
  13. }