blob: 7d4bda2fe557f0c1301eb8a08d7d942c1dfc3091 [file] [log] [blame]
package main
// findunusedport finds a random unused TCP port in the range 1k to 64k and prints it to standard out.
import (
"fmt"
"math/rand"
"os"
"syscall"
"veyron.io/veyron/veyron2/vlog"
)
func main() {
rand.Seed(int64(os.Getpid()))
for i := 0; i < 1000; i++ {
port := 1024 + rand.Int31n(64512)
fd, err := syscall.Socket(syscall.AF_INET, syscall.SOCK_STREAM, syscall.IPPROTO_TCP)
if err != nil {
continue
}
sa := &syscall.SockaddrInet4{Port: int(port)}
if err := syscall.Bind(fd, sa); err != nil {
continue
}
syscall.Close(fd)
fmt.Println(port)
return
}
vlog.Fatal("can't find unused port")
}