Wox/wox.core/util/net.go

29 lines
553 B
Go

package util
import (
"context"
"net"
"strconv"
)
func GetAvailableTcpPort(ctx context.Context) (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()
return l.Addr().(*net.TCPAddr).Port, nil
}
}
return
}
func IsTcpPortAvailable(ctx context.Context, port int) bool {
l, err := net.Listen("tcp", ":"+strconv.Itoa(port))
if err != nil {
return false
}
defer l.Close()
return true
}