连续检查tcp端口是否正在使用中

时间:2016-10-28 01:13:02

标签: go

我正在运行bash命令以在后台启动服务器:" ./ starServer&"但是,我的服务器需要几秒钟才能启动。我想知道我能做些什么来不断检查它运行的端口,以确保它在我真正继续前进之前做其他事情。我无法在golang api中找到任何有助于此的东西。任何帮助表示赞赏!

c := exec.Command("/bin/sh", "-c", command)
err := c.Start()
if err != nil {
    log.Fatalf("error: %v", err)
}
l, err1 := net.Listen("tcp", ":" + port)

1 个答案:

答案 0 :(得分:7)

您可以使用net.DialTimeoutnet.Dial连接到端口,如果成功,请立即将其关闭。您可以循环执行此操作直到成功。

for {
    conn, err := net.DialTimeout("tcp", net.JoinHostPort("", port), timeout)
    if conn != nil {
        conn.Close()
        break
    }
}

出于类似目的,一个简单的小型图书馆(我写的)可能也很有意思:portping