我正在运行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)
答案 0 :(得分:7)
您可以使用net.DialTimeout
或net.Dial
连接到端口,如果成功,请立即将其关闭。您可以循环执行此操作直到成功。
for {
conn, err := net.DialTimeout("tcp", net.JoinHostPort("", port), timeout)
if conn != nil {
conn.Close()
break
}
}
出于类似目的,一个简单的小型图书馆(我写的)可能也很有意思:portping
。