1
我想为我的客户端/服务器应用程序实现UDP ping,其中客户端将UDP数据包发送到任何服务器的临时端口,以尝试获取ICMP端口不可访问的答复。UDP ping - 尝试获取端口无法访问错误
我有以下代码。 ReadFromUDP()返回从套接字读取的错误=零和0字节。
问题是,我如何从服务器读取特定端口不可达的ICMP回复?
conn, _ := net.ListenUDP("udp4", src)
defer conn.Close()
t := time.Now()
conn.SetDeadline(t.Add(100 * time.Millisecond))
conn.SetReadDeadline(t.Add(250 * time.Millisecond))
w, e := conn.WriteTo([]byte("PING"), dst)
if e != nil {
return nil, errors.New("Failed to send UDP4 ping request")
}
r, _, e := conn.ReadFromUDP(b4)
if e != nil {
return nil, errors.New("Failed to read UDP4 response packets")
}
你尝试使用IPConn和ReadFromIP代替ReadFromUDP? –