Что означает код errno 57 (ENOTCONN)?

 
Также может означать:
КонстантаТипОС
ERROR_ADAP_HDW_ERRОшибка WindowsWindows
EBADSLTerrnoLinux
EBFONTerrnoSolaris
SYSTEM_EXIT_OWNED_MUTEXКод BSODWindows
Предыдущий Следующий
EBADSLT EBFONT

ENOTCONN

Операции требуется состояние другой стороны, которого нет у сокета

ENOTCONN возникает, когда API требует подключённую другую сторону, но сокет не подключён. Ошибка может последовать за попыткой отправки или приёма через сокет с установлением соединения до завершения подключения, после разрыва либо через сокет в стиле датаграмм, у которого нет другой стороны по умолчанию.

Это ошибка локального состояния, а не удалённый отказ. Для отправки без установления соединения правильным может быть API, передающий адрес назначения вместе с сообщением; для сокета с соединением программа сначала должна завершить и проверить установление подключения.

Что сохранить

  • Запишите тип сокета, текущее состояние соединения, результат последнего подключения и сведения о том, был ли вызван send(), sendto(), recv() или shutdown().
  • Проверьте гонку между завершением подключения и рабочим потоком, начинающим ввод-вывод, особенно после неблокирующего результата EINPROGRESS.
  • После ошибки или закрытия выведите старое состояние сокета из использования, не позволяя поставленной в очередь работе приложения продолжаться так, будто другая сторона всё ещё подключена.

Отличие от отсутствующего адреса

EDESTADDRREQ — случай без установления соединения, когда отправке требуется явное назначение. ENOTCONN — случай операции с соединением, когда API требуется ещё не установленная связь с другой стороной.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.