| Предыдущий | Следующий |
| WSAESOCKTNOSUPPORT | WSAEPFNOSUPPORT |
WSAEOPNOTSUPP
WSAEOPNOTSUPP означает, что сокет существует, но запрошенная операция не соответствует его типу, протоколу, направлению или поставщику. Следовательно, это несоответствие контракта между вызовом API и допустимым сокетом, а не общий сбой подключения.
Примеры несовместимых операций
Операция, ориентированная на соединение, например accept , не имеет смысла для дейтаграммного сокета. Флаги внеполосных данных применимы только там, где их поддерживают сокет и транспорт. Некоторые поставщики также предоставляют однонаправленные или ограниченные типы сокетов, которые не могут выполнять все операции отправки и приёма. Одно приложение может работать с потоковым сокетом и немедленно завершиться ошибкой после рефакторинга, изменившего тип на дейтаграммный.
Как исправить
- Перед вызовом операции проверьте предполагаемую семантику транспорта, не считая все сокеты взаимозаменяемыми.
- Запишите семейство, тип и протокол сокета, текущее состояние подключения, прослушивания и закрытия, а также переданные флаги.
- Проектируйте отдельные жизненные циклы для прослушивателей, подключённых потоков, неподключённых дейтаграмм и специальных сокетов поставщика.
Microsoft: accept · Microsoft: WSARecv · The Open Group: абстракции сокетов
Нужно найти другой код? Найти другой код состояния или ошибки.
