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

Mos*_*nel 3 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)
Run Code Online (Sandbox Code Playgroud)

Sto*_*ica 12

您可以使用net.DialTimeout或连接到端口net.Dial,如果成功,立即关闭它.您可以循环执行此操作直到成功.

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

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