Что означает код errno 42 (ENOPROTOOPT)?

 
Также может означать:
КонстантаТипОС
KERN_SEMAPHORE_DESTROYEDКод возврата ядра macOSmacOS
ippStsI18nGetMessageFailСтатус Intel IPPЛюбая
ENOMSGerrnoLinux
EUNATCHerrnoSolaris
EILSEQerrnoWindows
INCONSISTENT_IRPКод BSODWindows
Предыдущий Следующий
ENOMSG EUNATCH

ENOPROTOOPT

Поиск параметра завершился ошибкой до сетевого обмена

ENOPROTOOPT обычно означает недоступность параметра протокола. Наиболее полезно записывать его вместе с точными аргументами getsockopt() или setsockopt(): дескриптором, уровнем параметра, именем параметра, размером буфера, семейством и типом сокета.

Имя параметра не имеет глобального смысла. Одно числовое значение может означать другое на ином уровне протокола, а параметр, поддерживаемый одним семейством сокетов, может быть недоступен для другого. Проверка платформы во время сборки не доказывает, что сокет во время выполнения обладает теми же возможностями.

Отделяйте доступность параметра от поддержки операции

  • ENOPROTOOPT относится к поиску или применению конкретного параметра протокола на определённом уровне.
  • EOPNOTSUPP имеет более широкий смысл: операция, флаг или тип сокета не поддерживает запрос вызывающей стороны.
  • EPROTONOSUPPORT возникает раньше, когда сам протокол нельзя использовать с выбранным семейством.

Практические проверки

Сохраняйте в журналах символьные и числовые значения уровня и параметра, а не только переведённую подпись. Затем сверяйте параметр с целевым SDK macOS и фактическим семейством сокета. Повторение того же нераспознанного параметра не изменит его доступность.

Ссылки


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