Я пытаюсь записать программу сервера в C, с помощью другого клиента, я получаю эту ошибку, когда я пытаюсь соединить через порт 2080, например.
connection refused
Каковы могут быть причины этой ошибки?
Причин может быть много, но наиболее распространенными являются следующие:
Порт не открыт на машине назначения.
Порт открыт на целевой машине, но на ней переполнен список ожидающих соединений.
Брандмауэр между клиентом и сервером блокирует доступ (также проверьте локальные брандмауэры).
После проверки наличия брандмауэров и того, что порт открыт, используйте telnet для подключения к ip/порту для проверки соединения. Это устранит любые потенциальные проблемы в вашем приложении.
В соединении отказано означает, что порт, к которому вы пытаетесь подключиться, фактически не открыт.
Значит, вы подключаетесь либо к неправильному IP-адресу, либо к неправильному порту, либо сервер прослушивает неправильный порт, либо фактически не работает.
Распространенной ошибкой является не указание номера порта при привязке или подключении в сетевом порядке байтов ...
Проверьте на стороне сервера, что он прослушивает порт 2080. Сначала попробуйте подтвердить это на сервере, введя telnet на этот порт:
telnet localhost 2080
Если это слушая, он может ответить.
Ошибка означает, что ОС прослушивающего сокета распознал запрос на входящее соединение, но намеренно отклонил его.
Предполагая, что промежуточный брандмауэр не мешает, есть только две причины (о которых я знаю) ОС отклонить запрос на входящее соединение. Одна причина уже упоминалась несколько раз - порт прослушивания, к которому подключается, не открыт.
Есть еще одна причина, которая еще не была упомянута - порт прослушивания фактически открыт и активно используется, но его невыполненная очередь запросов входящего подключения достигла своего максимума, поэтому нет места для запроса входящего подключения. в очереди в тот момент. Код сервера еще не вызвал accept () достаточное количество раз, чтобы завершить очистку доступных слотов для новых элементов очереди.
Подождите немного и попробуйте снова установить соединение. К сожалению, нет возможности отличить «порт совсем не открыт» от «порт открыт, но сейчас слишком занят». Оба они используют один и тот же общий код ошибки.