为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕田峪9158850 2022-06-01 11:08:42
我正在创建与服务器的 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)}
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

最直接的选择是使用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.Dialer

d.DialContext(ctx, tcpserveraddr.Network(), tcpserveraddr.String())


查看完整回答
反对 回复 2022-06-01
  • 1 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信