Continuously check if tcp port is in use
go
Solution
You could connect to the port using `net.DialTimeout` or `net.Dial`, and if successful, immediately close it. You can do this in a loop until successful.
for {
conn, err := net.DialTimeout("tcp", net.JoinHostPort("", port), timeout)
if conn != nil {
conn.Close()
break
}
}
A simple tiny library (I wrote) for a similar purpose might also be of interest: `portping`.
Problem
I'm running a bash command to start up a server in the background : "./starServer &" However, my server takes a few seconds to start up. I'm wondering what I can do to continuously check the port that it's running on to ensure it's up before I actually move on and do other things. I couldn't find anything in the golang api that helped with this. Any help is appreciated! ``` c := exec.Command("/bin/sh", "-c", command) err := c.Start() if err != nil { log.Fatalf("error: %v", err) } l, err1 := net.Listen("tcp", ":" + port) ```