Ошибка набора номера Golang TCP: хост не работает - PullRequest
0 голосов
/ 09 мая 2018
net.Dial("tcp", "192.168.1.100:3000")

Приведенный выше вызов даст мне dial tcp 192.168.1.100:3000: connect: host is down.

Я могу успешно пропинговать конечную точку. Интересно, что будет причиной этой ошибки. Каковы будут возможные причины host is down?

Позвольте мне предоставить более подробную информацию. Конечная точка, к которой я звоню, работает на сервере MySQL. И я могу успешно подключиться к нему с помощью командной строки. Конечная точка является хостом в NAS.

Дальнейшее расследование, по-моему, сообщение об ошибке от https://github.com/golang/go/blob/60e3ebb9cba900f7b2f559b472726cee47e823c0/src/net/fd_unix.go#L94

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Я выяснил почему. Это из-за настроек брандмауэра. Эта ситуация вызвана использованием Little Snitch, которое проверит, имеет ли исполняемый код правильную подпись кода или нет. Если исполняемый файл не имеет правильной подписи кода, запрос фильтруется, и Little Snitch возвращает ошибку 64, что означает, что хост не работает в Mac.

0 голосов
/ 09 мая 2018

Сообщение об ошибке означает, что никакое TCP-соединение не может быть создано с заданным IP-адресом на заданном порту. Проверка с помощью ping не сильно помогает, так как ping использует ICMP для достижения хоста вопреки использованию TCP. Успешный пинг означает, что хост в целом доступен, но не то, что TCP-соединение с хостом на данном порту будет успешным. Может даже случиться, что такое соединение будет успешным, но ping не будет выполнен, поскольку он заблокирован правилом брандмауэра.

Типичные причины проблемы, которую вы видите:

  • Вы использовали неправильный целевой IP и / или порт.
  • Нет приложения, которое прослушивает этот порт на целевом компьютере, т. Е. Возможно, вы забыли запустить сервер, или он вышел из строя, или он был неправильно настроен.
  • Приложение прослушивает только локальный хост и, следовательно, недоступно извне компьютера.
  • Правила брандмауэра либо на сервере, либо между клиентским и серверным доступом к блоку.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...