То, каковы могут быть причины соединения, отказалось от ошибок?

Я пытаюсь записать программу сервера в C, с помощью другого клиента, я получаю эту ошибку, когда я пытаюсь соединить через порт 2080, например.

connection refused

Каковы могут быть причины этой ошибки?

94
задан ROMANIA_engineer 2 August 2017 в 18:16
поделиться

4 ответа

Причин может быть много, но наиболее распространенными являются следующие:

  1. Порт не открыт на машине назначения.

  2. Порт открыт на целевой машине, но на ней переполнен список ожидающих соединений.

  3. Брандмауэр между клиентом и сервером блокирует доступ (также проверьте локальные брандмауэры).

После проверки наличия брандмауэров и того, что порт открыт, используйте telnet для подключения к ip/порту для проверки соединения. Это устранит любые потенциальные проблемы в вашем приложении.

79
ответ дан 24 November 2019 в 06:06
поделиться

В соединении отказано означает, что порт, к которому вы пытаетесь подключиться, фактически не открыт.

Значит, вы подключаетесь либо к неправильному IP-адресу, либо к неправильному порту, либо сервер прослушивает неправильный порт, либо фактически не работает.

Распространенной ошибкой является не указание номера порта при привязке или подключении в сетевом порядке байтов ...

9
ответ дан 24 November 2019 в 06:06
поделиться

Проверьте на стороне сервера, что он прослушивает порт 2080. Сначала попробуйте подтвердить это на сервере, введя telnet на этот порт:

telnet localhost 2080

Если это слушая, он может ответить.

6
ответ дан 24 November 2019 в 06:06
поделиться

Ошибка означает, что ОС прослушивающего сокета распознал запрос на входящее соединение, но намеренно отклонил его.

Предполагая, что промежуточный брандмауэр не мешает, есть только две причины (о которых я знаю) ОС отклонить запрос на входящее соединение. Одна причина уже упоминалась несколько раз - порт прослушивания, к которому подключается, не открыт.

Есть еще одна причина, которая еще не была упомянута - порт прослушивания фактически открыт и активно используется, но его невыполненная очередь запросов входящего подключения достигла своего максимума, поэтому нет места для запроса входящего подключения. в очереди в тот момент. Код сервера еще не вызвал accept () достаточное количество раз, чтобы завершить очистку доступных слотов для новых элементов очереди.

Подождите немного и попробуйте снова установить соединение. К сожалению, нет возможности отличить «порт совсем не открыт» от «порт открыт, но сейчас слишком занят». Оба они используют один и тот же общий код ошибки.

66
ответ дан 24 November 2019 в 06:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: