猿问

如何在 DialTCP 函数上设置截止日期并处理超时错误

我正在创建与服务器的 TCP 连接,但我需要指定超时。


我怎样才能做到这一点?


这是简化的代码:


tcpserveraddr, err := net.ResolveTCPAddr("tcp", Serveraddr+":"+Serverport)

if err != nil {

    log.Printf("error during address relolution: %v\n", err)

}

serversocket, err := net.DialTCP("tcp", nil, tcpserveraddr)

if err != nil {

    log.Printf("error during serversocket.DialTCP(): %v\n", err)

}


慕田峪9158850
浏览 154回答 1
1回答

www说

最直接的选择是使用net.DialTimeout():net.DialTimeout(tcpserveraddr.Network(), tcpserveraddr.String(), 5*time.Second)您还可以创建一个net.Dialer,它可以让您更好地控制拨号选项,然后DialContext()与您自己的上下文一起使用(带超时):ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)defer cancel()var d net.Dialerd.DialContext(ctx, tcpserveraddr.Network(), tcpserveraddr.String())
随时随地看视频慕课网APP

相关分类

Go
我要回答