ggzeng
10/15/2019 - 11:51 AM

tcp connect timeout check

检测TCP/UDP连接超时

    m.Conn.SetReadDeadline(time.Now().Add(delay))
    for {
        n, err := m.Conn.Read(buffer)
        if err != nil {
            log.Println(err)
        }
        if n > 0 {
            // something was read before the deadline
            // let's delay the deadline
            m.Conn.SetReadDeadline(time.Now().Add(delay))
        }

        if nerr, ok := err.(net.Error); ok && nerr.Timeout() {
            // Timeout error
            fmt.Println("No response")
            m.Kill <- true
            return
        }
    }