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? –