Я пытаюсь написать серверную программу на C, используя другой клиент, я получаю эту ошибку, например, когда пытаюсь подключиться через порт 2080.
connection refused
В чем могут быть причины этой ошибки?
c
sockets
connection-refused
Зенет
источник
источник
ping
, downforeveryoneorjustme.com показал, что это не только я, и я все еще могу получить к нему доступ через FTP. Через пару минут ошибка была исправлена.connect()
зависит от конкретного IP и порта, готового к использованию.Ответы:
Причин может быть много, но самые распространенные:
Порт не открыт на целевом компьютере.
Порт открыт на целевом компьютере, но список ожидающих подключений заполнен.
Межсетевой экран между клиентом и сервером блокирует доступ (также проверьте локальные межсетевые экраны).
После проверки наличия брандмауэров и открытия порта используйте telnet для подключения к IP / порту для проверки возможности подключения. Это устраняет любые потенциальные проблемы из вашего приложения.
источник
Ошибка означает, что ОС прослушивающего сокета распознала запрос на входящее соединение, но решила намеренно отклонить его.
Предполагая, что промежуточный брандмауэр не мешает, есть только две причины (о которых я знаю) ОС отклонить запрос на входящее соединение. Одна причина уже упоминалась несколько раз - порт прослушивания, к которому подключается, не открыт.
Есть еще одна причина, которая еще не была упомянута - порт прослушивания фактически открыт и активно используется, но его невыполненная очередь запросов на входящее соединение достигла своего максимума, поэтому для этого запроса на входящее соединение нет места. момент. Код сервера еще не вызвал accept () достаточно раз, чтобы завершить очистку доступных слотов для новых элементов очереди.
Подождите немного и попробуйте снова установить соединение. К сожалению, нет возможности различить «порт совсем не открыт» и «порт открыт, но сейчас слишком занят». Оба они используют один и тот же общий код ошибки.
источник
Если вы пытаетесь открыть TCP-соединение с другим хостом и видите ошибку «Соединение отклонено», это означает, что
RST - это бит в пакете TCP, который указывает, что соединение следует сбросить. Обычно это означает, что другой хост получил вашу попытку подключения и активно отклоняет ваше TCP-соединение, но иногда промежуточный брандмауэр может заблокировать ваш TCP SYN-пакет и отправить вам TCP RST.
См. Https://tools.ietf.org/html/rfc793, стр. 69:
источник
В соединении отказано означает, что порт, к которому вы пытаетесь подключиться, фактически не открыт.
Таким образом, либо вы подключаетесь к неправильному IP-адресу, либо к неправильному порту, либо сервер прослушивает неправильный порт, либо фактически не работает.
Распространенная ошибка - не указывать номер порта при привязке или подключении в сетевом порядке байтов ...
источник
Проверьте на стороне сервера, что он прослушивает порт 2080. Сначала попробуйте подтвердить это на сервере, отправив telnet на этот порт:
telnet localhost 2080
Если он слушает, он может ответить.
источник
1. Проверьте статус вашего сервера.
2. Проверьте статус порта.
Например 3306
netstat -nupl|grep 3306
.3. Проверьте свои брандмауэры. Например, добавьте 3306
источник
Хотя это не похоже на вашу ситуацию, иногда ошибка отказа в соединении также может указывать на конфликт IP-адресов в вашей сети. Вы можете найти возможные конфликты IP, запустив:
и
В этом вопросе AskUbuntu также есть дополнительная информация.
источник
С точки зрения брандмауэра Checkpoint, вы увидите сообщение брандмауэра, если вы действительно выберете «Отклонить в качестве действия», тем самым подвергнув потенциальному злоумышленнику присутствие брандмауэра перед сервером. Брандмауэр автоматически разорвет все подключения, не соответствующие политике. Отказ в соединении почти всегда исходит с сервера
источник
У меня такая же проблема с моим рабочим компьютером. Проблема в том, что когда вы вводите localhost, он переходит на адрес прокси, а не на локальный адрес, вы должны обойти его, следуя этим шагам
Chrome => Настройки => Изменить настройки прокси => Настройки локальной сети => установите флажок Обходить прокси-сервер для локальных адресов.
источник
В Ubuntu попробуйте
sudo ufw allow <port_number>
разрешить брандмауэру доступ как к вашему серверу, так и к базе данных.источник
Попробуйте передать параметр порта "-p":
источник
В моем случае это происходит, когда сайт заблокирован в моей стране, и я не использую VPN. Например, когда я пытаюсь получить доступ к vimeo.com из Индонезии, который заблокирован.
источник
У меня было такое же сообщение с совершенно другой причиной:
wsock32.dll
не было найдено.::socket(PF_INET, SOCK_STREAM, 0);
Вызов продолжал возвращая ,INVALID_SOCKET
но причина в том , что DLL Winsock не была загружена.В конце концов я запустил монитор процессов Sysinternals и заметил, что он ищет dll «везде», но не находит.
Тихие неудачи - это здорово!
источник