你能用icmp定位一个特定的端口吗?

时间:2016-02-03 01:24:32

标签: go tcp ip icmp

我相信标题是非常自我解释的,但为了以防万一,我会进一步解释。

我在Go中编写一个函数,它使用icmp来检查特定服务是否正在运行。我从Go中实现了ping这个想法。当我尝试命令行ping时,它无法解析127.0.0.1:8080,并且该函数也是如此,这是有道理的。但是,我可以使用icmp检查该地址和端口我丢失的东西吗?或者我应该像tcp这样的东西来定位一个端口?

现在我有这个简单的功能,我可以只使用tcp,但我很好奇我是否可以使用像icmp这样的东西。

func (c *Controller) Ping() error {
    conn, connErr := net.Dial("ip4:icmp", c.APIServerIP)
    if connErr != nil {
        return connErr
    }
    conn.SetDeadline(time.Now().Add(3 * time.Second))
    defer conn.Close()
    return nil
}

1 个答案:

答案 0 :(得分:4)

没有。 ICMP中没有端口。

如果您想知道特定的TCP服务器是否正在运行,请尝试连接到它。