net.LookupIP 是最稳妥的 DNS A/AAAA 查询方式,仅接受纯域名,返回 \[\]net.IP;需用 net.Resolver 自定义 DNS 服务器、超时等;非 A 记录需专用函数如 LookupMX;标准库不提供超时重试缓存,须自行封装。用 net.LookupIP 做基础 DNS A/AAAA 查询Go 标准库的 net.LookupIP 是最常用、也最稳妥的 DNS 查询入口,它自动处理 IPv4/IPv6 双栈、系统默认 resolver(如 /etc/resolv.conf)、超时和重试逻辑。不需要额外依赖,适合绝大多数服务发现、健康检查、白名单校验等场景。常见错误是直接传入带协议或端口的字符串(比如 "https://example.com:8080"),net.LookupIP 只接受纯域名("example.com"),否则会报 "lookup example.com:8080: no such host"。域名必须不含 scheme、path、query、端口 ------ 传 "example.com",别传 "example.com:443"返回的是 \[\]net.IP,不是字符串;IPv4 地址长度为 4 字节,IPv6 为 16 字节,用 ip.To4() 或 ip.To16() 安全判断类型默认走系统 resolver,不走 TCP fallback;如果要强制 UDP/TCP 或指定 DNS 服务器,得换 net.Resolver用 net.Resolver 控制 DNS 查询行为当需要绕过系统配置、指定 DNS 服务器(比如 8.8.8.8)、设置自定义超时、或强制使用 TCP 协议时,net.Resolver 是唯一可控路径。它本质是 net.LookupIP 的"高级封装",但必须显式构造,且容易漏掉关键字段。典型翻车点:只设 PreferGo 却没配 Dial,导致仍走系统 stub resolver;或者 DialContext 返回的 net.Conn 没设读写超时,整个查询卡死。立即学习"go语言免费学习笔记(深入)";Resolver.PreferGo = true 仅启用 Go 自研解析器,但不自动启用自定义 DNS ------ 必须同时提供 Resolver.DialDial 函数里要用 net.DialTimeout("udp", "8.8.8.8:53", 2*time.Second),TCP 同理;UDP 失败后不会自动切 TCP,需自己封装重试逻辑并发查多个域名时,Resolver 实例可复用,但别在多个 goroutine 里共用未加锁的 sync.Pool 或 map 缓存结果 ------ Go 的 net.Resolver 本身是线程安全的查 MX、TXT、CNAME 等非 A 记录得用 net.LookupMX 等专用函数Go 不提供泛型 DNS 查询接口(比如类似 Python 的 dns.resolver.resolve(qname, "TXT")),每种记录类型都有独立函数:LookupMX、LookupTXT、LookupNS、LookupCNAME。它们底层都调用同一套 resolver,但参数和返回值完全不同。 稿定AI 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能
相关推荐
海绵宝宝转agent6 小时前
learn-claude-code第1-5章开源学习笔记分享小奇不哭7 小时前
ROS2 单节点,RGB-D 深度相机局部路径提取 + B 样条平滑路径 + YOLOv8 障碍物检测 + 深度测距,用于移动机器人视觉局部循迹。小小龙学IT7 小时前
Python scikit-learn 机器学习库深度解析Elastic 中国社区官方博客7 小时前
将你自己的密钥用于现有 Elastic Cloud 部署2601_962071577 小时前
类变量和全局变量的查找路径有什么区别?红海云8 小时前
Jev:给智能系统做判断的模型wjkjpcba8 小时前
PCBA烧录程序是什么:PCBA包工包料厂家解析烧录与测试꯭自꯭闭꯭8 小时前
达梦事物特性及MVCC卷无止境8 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?Java后端的Ai之路8 小时前
Python进阶探索29_eval内置函数