douyan6548
2016-10-28 01:13
浏览 41
已采纳

持续检查TCP端口是否在使用中

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)
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dpkrbe395930 2016-10-28 05:58
    已采纳

    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.

    打赏 评论

相关推荐 更多相似问题