gpt4 book ai didi

go - net.Conn 是否存在可恢复的读取错误?

转载 作者:行者123 更新时间:2023-12-01 23:45:03 27 4
gpt4 key购买 nike

如果 net.Conn.Read() 方法返回错误,这是否意味着将来的读取也会因错误而失败?或者有可恢复的错误吗?如果是这样,我如何知道是否/何时重试读取?

最佳答案

一般来说,可重试的 conn.Read 操作不会出现任何错误。 io.Reader 接口(interface)的大多数使用都会假定所有错误都是最终的。

任何确保可重试的 net 包错误都将符合 net.Error接口(interface),并公开一个临时方法。

这最常在 Accept 循环中使用,就像 http 包中的这个解释示例

for {
rw, e := l.Accept()
if e != nil {
if ne, ok := e.(net.Error); ok && ne.Temporary() {
if tempDelay == 0 {
tempDelay = 5 * time.Millisecond
} else {
tempDelay *= 2
}
if max := 1 * time.Second; tempDelay > max {
tempDelay = max
}
time.Sleep(tempDelay)
continue
}
return e
}
}

任何其他可能的情况都需要在了解协议(protocol)和当前情况的情况下根据个人情况进行处理。

关于go - net.Conn 是否存在可恢复的读取错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57924052/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com