Indy10使用指向IPv6的主机名连接TCP服务器失败报错11001
问题原因解析
- 错误11001对应WSAHOST_NOT_FOUND,核心是主机名解析失败。
- 当你用
[ip6test]作为连接目标时,TIdTCPClient所属的Indy组件解析逻辑会把方括号内的内容直接当作IPv6地址处理,而非先将ip6test作为主机名去查询HOSTS文件。ip6test显然不是合法的IPv6地址格式,因此直接解析失败触发报错。 - 直接用带方括号的IPv6地址能成功,是因为Indy可以正确识别方括号包裹的合法IPv6地址并建立连接;ping能通
ip6test,则是Windows系统自带的解析逻辑会优先读取HOSTS文件,正确将ip6test映射到对应的链路本地IPv6地址。 - 额外说明:你的HOSTS里的IPv6是带
%16区域标识符的链路本地地址,Indy通过主机名解析这类地址时可能存在兼容问题,但这不是本次报错的直接原因——根源是你错误地给主机名套了方括号,方括号仅用于包裹原生IPv6地址,不能套在主机名外。
内容的提问来源于stack exchange,提问作者Ross
相关产品推荐
相关产品推荐

