Go

  1. package utils
  2. import (
  3. "net"
  4. )
  5. func GetFreePort() (int, error) {
  6. addr, err := net.ResolveTCPAddr("tcp", "localhost:0")
  7. if err != nil {
  8. return 0, err
  9. }
  10. l, err := net.ListenTCP("tcp", addr)
  11. if err != nil {
  12. return 0, err
  13. }
  14. defer l.Close()
  15. return l.Addr().(*net.TCPAddr).Port, nil
  16. }

Python

  1. def get_free_tcp_port():
  2. tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  3. tcp.bind(("", 0))
  4. _, port = tcp.getsockname()
  5. tcp.close()
  6. return port