#go #tcp
#Вперед #tcp
Вопрос:
Моей целью было бы решить, было ли выполнено неудачное TCP-соединение с net.Сбой набора (это не обязательно должен быть net.Dial) произошел из-за проблемы с брандмауэром / подключением или просто сбоя в прослушивателе.
Итак, по сути, я хотел бы видеть что-то подобное тому, что я сделал бы с tcptraceroute.
- тайм-аут (какой был последний ip)
- открытый / закрытый порт в 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()
Комментарии:
1. В случае возникновения ошибки вы можете вызвать утилиту traceroute для получения информации о переходах (например, этот github.com/aeden/tracerout )