net.Dial("tcp", "192.168.1.100:3000")
以上电话给我dial tcp 192.168.1.100:3000: connect: host is down
。
我可以成功ping通端点。我想知道这个错误的原因是什么。 host is down
的可能原因是什么?
让我提供更多细节。我拨打的端点正在运行mysql服务器。我可以使用命令行成功连接到它。端点是NAS中的主机。
进一步调查,我认为错误消息来自https://github.com/golang/go/blob/60e3ebb9cba900f7b2f559b472726cee47e823c0/src/net/fd_unix.go#L94
答案 0 :(得分:2)
错误消息表示无法在给定端口上为给定IP地址创建TCP连接。你的ping检查没有多大帮助,因为ping确实使用ICMP来访问主机,这与你使用TCP相反。成功的ping只是意味着主机一般是可达的,但不是与给定端口上的主机的TCP连接成功。甚至可能是这样的连接成功但ping失败,因为它被防火墙规则阻止。
您看到的问题的典型原因是:
答案 1 :(得分:2)
我发现了原因。这是因为防火墙设置。这种情况是由使用Little Snitch引起的,它会检查可执行文件是否具有有效的代码签名。如果可执行文件没有有效的代码签名,请求将被过滤,Little Snitch将返回错误号64,这意味着Mac中的主机已关闭。