正确的方法来处理丢失的IPv6连接
问题描述:
我目前正在寻找一种方法来正确处理丢失的IPv6连接。正确的方法来处理丢失的IPv6连接
用例是,我解析了一个DNS记录,该记录可能包含AAAA
记录并连接到每个已解析的IP。现在运行该代码的系统可能没有IPv6连接。
所以我正在寻找正确的方法来处理这个问题,并忽略这些记录,但只有当主机无法连接。
我目前的做法是:
if ip.To4() == nil && err.(*net.OpError).Err.(*os.SyscallError).Err == syscall.EHOSTUNREACH {
log.Info("ignoring unreachable IPv6 address")
continue
}
但我不知道,如果有更好的办法。
答
简单的解决办法是使用使用名称net.Dialer
与DualStack
设置为true
,只是Dial()
,让库处理“快乐眼球”为您服务。
不幸的是,这不是一个选项,因为我想连接到指定的每个主机(监控检查),所以我只是寻找最佳方法来过滤掉ipv6记录,如果没有ipv6连接 – beck