dpcnm2132
2018-05-09 10:45
浏览 131
已采纳

Golang TCP拨号错误:主机已关闭

net.Dial("tcp", "192.168.1.100:3000")

The above call give me dial tcp 192.168.1.100:3000: connect: host is down.

I can successfully ping the endpoint. I wonder what will be the cause of this error. What will be the possible causes of host is down?

Let me provide more details. The endpoint I am dialing to is running mysql server. And I can successfully connect to it with command line. The endpoint is host in a NAS.

Further investigation, I believe the error message is from https://github.com/golang/go/blob/60e3ebb9cba900f7b2f559b472726cee47e823c0/src/net/fd_unix.go#L94

图片转代码服务由CSDN问答提供 功能建议

  net.Dial(“ tcp”,“ 192.168.1.100:3000")
  
 
 

上述调用给了我拨号tcp 192.168.1.100:3000:connect:主机已关闭

我可以成功ping通端点。 我想知道是什么原因导致此错误。 主机关闭的可能原因是什么?

让我提供更多详细信息。 我拨号到的端点正在运行mysql服务器。 而且我可以使用命令行成功连接到它。 端点是NAS中的主机。

进一步调查,我认为错误消息来自 https://github.com/golang/go/blob/60e3ebb9cba900f7b2f559b472726cee47e823c0/src/net/fd_unix.go#L94

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dozoqn3347 2018-05-11 07:02
    已采纳

    I have found out why. This is because of firewall settings. This situation is caused by using Little Snitch which will check executable has valid code signature or not. If the executable does not have valid code signature, the request is filtered and Little Snitch will return error number 64 which mean host is down in Mac.

    点赞 评论
  • dsklzerpx64815631 2018-05-09 11:02

    The error message means that no TCP connection can not be created to the given IP address at the given port. Your check with ping does not help much since ping does use ICMP to reach the host contrary to your use of TCP. A successful ping just means that the host is reachable in general but not that a TCP connection to the host on the given port will succeed. It might even be that such a connection succeeds but ping fails since it is blocked by a firewall rule.

    Typical causes for the problem you see are:

    • You've used the wrong target IP and/or port.
    • There is no application listening at this port at the target machine at all, i.e. maybe you forgot to start the server or it crashed or it was configured wrongly.
    • The application is only listening on localhost and is thus not reachable from outside the machine.
    • Firewall rules either at the server machine or between client and server block access.
    点赞 评论

相关推荐 更多相似问题