Я хочу реализовать UDP-пинг для моего клиент-серверного приложения, в котором клиент отправляет UDP-пакеты на любой из эфемерных портов сервера, пытаясь получить недостижимый ответ ICMP-порта.UDP ping - попробуйте получить ошибку недоступности порта
У меня есть следующий код. ReadFromUDP() return error = nil и 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? –