首页 > 解决方案 > 如何使用“golang.org/x/net/icmp”获取 icmp(ping) 目标 IP 地址

问题描述

我有一个 icmp 监听函数:

func Start(url string) {

conn, err := icmp.ListenPacket("ip4:icmp", url)
if err != nil {
    log.Fatal(err)
}

for {
    var msg []byte
    length, sourceIP, err := conn.ReadFrom(msg)

    if err != nil {
        log.Println(err)
        continue
    }
    fmt.Println(url + "===========")
    log.Printf("message = '%s', length = %d, source-ip = %s", string(msg), length, sourceIP)
}
_ = conn.Close()

}

因为我的服务器主机中有两个网卡,所以我用“ Start(0.0.0.0) ”启动这个函数,

在 ping 到此服务器时,得到以下信息:

2020/08/31 11:11:02 message = '', length = 0, source-ip = 192.168.255.133
192.168.255.128===========
2020/08/31 11:11:03 message = '', length = 0, source-ip = 192.168.255.133
192.168.255.128===========
2020/08/31 11:11:04 message = '', length = 0, source-ip = 192.168.255.133

仅源 IP 地址,如何获取 ping 目标 IP 地址?

标签: gopingicmp

解决方案


推荐阅读