Skip to content

Commit

Permalink
add:port: new port packet to get free port
Browse files Browse the repository at this point in the history
  • Loading branch information
burgesQ committed Apr 28, 2023
1 parent e185f8b commit a98d9a4
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions port/get.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package port

import (
"errors"
"net"
)

var ErrGetTCP = errors.New("get tcp address")

func GetFree() (port int, err error) {
var a *net.TCPAddr

if a, err = net.ResolveTCPAddr("tcp", "localhost:0"); err == nil {
var l *net.TCPListener
if l, err = net.ListenTCP("tcp", a); err == nil {
defer l.Close()

addr, ok := l.Addr().(*net.TCPAddr)
if !ok {
return 0, ErrGetTCP
}

return addr.Port, nil
}
}

return
}

0 comments on commit a98d9a4

Please sign in to comment.