Можно ли получить адрес последнего прыжка неудачного tcp net.Dial? - PullRequest
2 голосов
/ 30 марта 2019

Моей целью было бы решить, будет ли неудачное TCP-соединение, созданное с помощью net.Dial (это не обязательно должен быть net.Dial), из-за проблемы брандмауэра / подключения или просто сбоя в приемнике.

По сути, я хотел бы видеть нечто похожее на то, что я бы сделал с tcptraceroute.

  1. Тайм-аут (какой был последний ip)
  2. открытый / закрытый порт на dst

Также было бы неплохо выяснить, какой сетевой интерфейс (локальный адрес) использовался для неудачного соединения

conn, err := net.Dial("tcp", hostName + ":" + portNum)

if err != nil {
// is it possible to have socket values here
// maybe the last succesful hop before the connection failed?
}

// on succesfull conn it is straightforward
conn.LocalAddr()
conn.RemoteAddr()

...