我有一个尝试连接服务器的客户端。
我需要能够终止客户端并中止此拨号尝试。这可能吗 ?我怎么能这样做?
超时显然超过30秒,因为测试阻止直到30秒过去而没有拨号呼叫失败。
我们可以指定自己的超时吗?
答案 0 :(得分:7)
net.Dialer
有Timeout
和Deadline
个字段,也可以使用DialContext
的上下文,允许超时和取消。
您可以参考DialTimeout
了解如何设置基本拨号器:
func DialTimeout(network, address string, timeout time.Duration) (Conn, error) {
d := Dialer{Timeout: timeout}
return d.Dial(network, address)
}
以context.Context
:
var d Dialer
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
return d.DialContext(ctx, network, address)