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 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能
相关推荐
倔强的石头_13 小时前
《Kingbase护城河》——猎捕慢查询:执行计划的微观解析与索引调优实战SelectDB15 小时前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑荣码1 天前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂金銀銅鐵1 天前
[Python] 基于欧几里得算法,实现分数约分计算器Lyn_Li1 天前
Kaggle Top 5 | 198只股票、200条数据的金融预测——BattleFin高分方案从零复现小九九的爸爸2 天前
前端想要入门Agent开发,要具备哪些Python基础?阿耶同学2 天前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构jiayou642 天前
KingbaseES 表级与列级加密完全指南花酒锄作田2 天前
Pydantic校验配置文件hboot2 天前
AI工程师第四课 - 深度学习入门