Go中如何知道所有断网情况?

问题描述 投票:0回答:1

网络错误是常见且不可避免的。在 go 程序中,我需要知道错误是否是由连接断开引起的。例如:

  1. io.EOF
    表示连接断开(我不在乎哪一端挂断)——这是一个“连接断开”错误。
  2. 使用
    net.Error.Timeout()
    我可以判断错误是否是由读/写超时引起的——这不是“连接中断”错误。

但是,如何将以下情况识别为“连接断开”:

  1. 使用封闭网络连接
  2. connection reset by peer

将它们与其他网络错误区分开来(例如无法解析域名)。

我当然希望不要比较错误字符串。

go network-programming
1个回答
0
投票

这是一个糟糕的问题。我的目的是区分:这是外部引起的错误(即网络错误),还是内部引起的错误,即我的代码中的问题。

解决这个问题的正确方法,我认为,是检查错误是否是

net.Error
类型,如果是,检查
Temporary()
是否为真。

© www.soinside.com 2019 - 2024. All rights reserved.