| Предыдущий | Следующий |
| ENOSR | EADDRNOTAVAIL |
EPROTOTYPE
Протокол и тип сокета по отдельности известны, но несовместимы
EPROTOTYPE обозначает несоответствие протокола и запрошенной семантики сокета. Solaris сообщает, что указанный протокол не поддерживает тип сокета. POSIX socket() аналогично допускает эту ошибку, когда ненулевой протокол запрошен с типом, который этот протокол не поддерживает.
Это точнее, чем EPROTONOSUPPORT: проблема не просто в отсутствии реализации протокола. Также это отличается от ESOCKTNOSUPPORT, где сам тип сокета может не поддерживаться семейством или реализацией. Для различения требуется ошибочная тройка домена, типа и протокола.
Проверка сочетания аргументов сокета
- Запишите символьные и числовые значения домена, типа и протокола, переданные
socket(). - Проверьте необходимость явного номера протокола; нулевой протокол просит реализацию выбрать значение по умолчанию, подходящее семейству и типу.
- Проверьте скопированные константы платформы и условную компиляцию, если один код работает на нескольких UNIX-подобных системах.
Ссылки
- Oracle Solaris: каталог errno intro(2)
- POSIX: правила domain, type и protocol для socket()
- POSIX Issue 8: errno.h
Нужно найти другой код? Найти другой код состояния или ошибки.