Что означает код errno 95 (ENOTSOCK)?

 
Также может означать:
КонстантаТипОС
EOPNOTSUPPerrnoLinux
EMULTIHOPerrnomacOS
SECURITY_INITIALIZATION_FAILEDКод BSODWindows
Предыдущий Следующий
EMULTIHOP EPFNOSUPPORT

ENOTSOCK

Допустимый целочисленный дескриптор всё равно может обозначать объект неверного типа

ENOTSOCK возвращается, когда операция сокета применяется к дескриптору, не являющемуся сокетом. Дескриптор может быть численно допустимым и открытым; проблема в том, что он относится к другому типу объекта, например файлу, каналу или несвязанному устройству.

Поэтому ENOTSOCK отличается от EBADF, который относится к недопустимому файловому дескриптору, и от EBADFD, используемого Solaris для дескриптора в неверном состоянии. Особенно важная причина на уровне приложения — повторное использование дескриптора после закрытия: то же целое число позднее может обозначать другой объект.

Проверка происхождения дескриптора

  • Трассируйте создание, дублирование, закрытие и передачу дескриптора, переданного сбойному сокетному API.
  • В асинхронном коде проверьте гонки времени жизни, когда сокет закрывается, а его числовой дескриптор повторно используется до выполнения поставленной в очередь операции.
  • В отладочных сборках сохраняйте тип объекта и метаданные владения, а не записывайте только номер дескриптора.

Ссылки


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