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) ```

Original source