Windows Коды ошибок сокетов

большинство функций сокетов Windows 2 не возвращают конкретную причину ошибки, когда функция возвращает значение. Дополнительные сведения см. в разделе Обработка ошибок Winsock .

Функция всажетластеррор возвращает последнюю ошибку, возникшую для вызывающего потока. если определенная функция Windows sockets указывает на возникновение ошибки, эту функцию следует вызывать немедленно, чтобы получить расширенный код ошибки для вызова функции, вызвавшей сбой. Эти коды ошибок и краткое текстовое описание, связанное с кодом ошибки, определены в файле заголовка Winerror. h . Функцию FormatMessage можно использовать для получения строки сообщения для возвращенной ошибки.

Сведения о том, как выполнять обработку кодов ошибок при переносе приложений сокетов в Winsock, см. в разделе коды ошибок — ошибки, з _ и всажетластеррор.

В следующем списке описаны возможные коды ошибок, возвращаемые функцией всажетластеррор . Ошибки перечислены в числовом порядке с именем макроса ошибки. Некоторые коды ошибок, определенные в файле заголовка Winsock2. h , не возвращаются ни одной из функций.

Возвращаемый код и значение Описание
WSA_INVALID_HANDLE
6
Указан недопустимый обработчик объекта события.
Приложение пытается использовать объект события, но указанный маркер является недопустимым.
WSA_NOT_ENOUGH_MEMORY
8
Недостаточно памяти.
приложение использует функцию сокетов Windows, которая напрямую сопоставляется с Windowsной функцией. функция Windows указывает на отсутствие требуемых ресурсов памяти.
WSA_INVALID_PARAMETER
87
Один или несколько параметров недопустимы.
приложение использует функцию сокетов Windows, которая напрямую сопоставляется с Windowsной функцией. функция Windows указывает на проблему с одним или несколькими параметрами.
WSA_OPERATION_ABORTED
995
Операция перекрытия прервана.
Перекрывающаяся операция была отменена из-за замыкания сокета или выполнения команды SIO_FLUSH в всаиоктл.
WSA_IO_INCOMPLETE
996
Перекрытый объект события ввода-вывода, не являющийся сигнальным состоянием.
Приложение попыталось определить состояние операции перекрытия, которая еще не завершена. Приложения, использующие всажетоверлаппедресулт (с флагом фваит , имеющим значение false) в режиме опроса, чтобы определить, когда была выполнена операция перекрытия, получите этот код ошибки до завершения операции.
WSA_IO_PENDING
997
Перекрывающиеся операции будут выполнены позже.
Приложение инициировало перекрывающуюся операцию, которая не может быть закончена немедленно. Индикатор завершения будет указан позже после завершения операции.
Всаеинтр
10004
Прерванный вызов функции.
Операция блокировки была прервана вызовом всаканцелблоккингкалл.
Всаебадф
10009
Недопустимый файловый маркер.
Указан недопустимый файловый обработчик.
Всаеакцес
10013
В разрешении отказано.
Предпринята попытка доступа к сокету методом, запрещенным его разрешениями на доступ. В качестве примера используется широковещательный адрес для функции SendTo без широковещательного разрешения, установленного с помощью сетсоккопт(SO_BROADCAST).
другая возможная причина ошибки всаеакцес заключается в том, что при вызове функции bind (в Windows NT 4,0 с пакетом обновления 4 (SP4) или более поздней версии) другой драйвер приложения, службы или режима ядра привязан к тому же адресу с эксклюзивным доступом. такой эксклюзивный доступ является новой функцией Windows NT 4,0 с пакетом обновления 4 (SP4) и более поздних версий и реализуется с помощью параметра SO_EXCLUSIVEADDRUSE .
Всаефаулт
10014
Неправильный адрес.
Система обнаружила недопустимый адрес указателя при попытке использования аргумента указателя вызова. Эта ошибка возникает, если приложение передает недопустимое значение указателя или длина буфера слишком мала. Например, если длина аргумента, который является структурой SOCKADDR , меньше, чем sizeof (SOCKADDR).
Всаеинвал
10022
Недопустимый аргумент.
Указан недопустимый аргумент (например, указан недопустимый уровень для функции сетсоккопт ). В некоторых случаях он также ссылается на текущее состояние сокета — например, вызов метода Accept на сокете, который не прослушивается.
Всаемфиле
10024
Слишком много открытых файлов.
Слишком много открытых сокетов. Каждая реализация может иметь максимальное количество доступных дескрипторов сокетов: глобально, на один процесс или на поток.
Всаеваулдблокк
10035
Ресурс временно недоступен.
Эта ошибка возвращается из операций на неблокирующих сокетах, которые не могут быть завершены немедленно, например, если данные не помещаются в очередь для чтения из сокета. Это некритическая ошибка, и операция должна быть повторена позже. ВСАЕВАУЛДБЛОКК будет считаться результатом вызова Connect на неблокирующем сокете SOCK_STREAM, так как некоторое время должно пройти для установления соединения.
Всаеинпрогресс
10036
Операция сейчас выполняется.
В данный момент выполняется блокирующая операция. Windows Сокеты допускают только одну операцию блокировки (по задаче или потоку), и если какой-либо другой вызов функции выполняется (независимо от того, ссылается ли он или на какой-либо другой сокет), функция завершается с ошибкой ВСАЕИНПРОГРЕСС.
Всаеалреади
10037
Операция уже выполняется.
Предпринята попытка выполнить операцию на неблокирующем сокете с уже выполняемой операцией, т. е. вызов соединения второй раз на неблокирующем сокете, который уже подключается, или отмена асинхронного запроса (всаасинкжетксбии), который уже был отменен или завершен.
Всаенотсокк
10038
Операция сокета не на сокете.
Предпринята попытка выполнить операцию для объекта, который не является сокетом. Либо параметр обработчика сокета не ссылается надопустимый сокет, либо член FD_SET является недопустимым.
Всаедестаддррек
10039
Необходим адрес назначения.
В операции на сокете пропущен требуемый адрес. Например, эта ошибка возвращается, если метод SendTo вызывается с удаленным адресом ADDR_ANY.
Всаемсгсизе
10040
Слишком длинное сообщение.
Сообщение, отправленное на сокете датаграмм, было больше, чем внутренний буфер сообщений или какое-либо другое ограничение сети, либо буфер, используемый для получения датаграммы, меньше, чем сама датаграмма.
Всаепрототипе
10041
Неправильный тип протокола для сокета.
В вызове функции сокета указан протокол, не поддерживающий семантику запрошенного типа сокета. Например, протокол ARPA Интернет UDP не может быть указан с типом сокета SOCK_STREAM.
Всаенопротупт
10042
Неверный параметр протокола.
В вызове жетсоккопт или сетсоккопт был указан неизвестный, недопустимый или неподдерживаемый параметр или уровень.
Всаепротоносуппорт
10043
Протокол не поддерживается.
Запрошенный протокол не был настроен в системе или для него не существует реализации. Например, вызов сокета запрашивает сокет SOCK_DGRAM, но указывает протокол потока.
Всаесокктносуппорт
10044
Тип сокета не поддерживается.
Указанный тип сокета не поддерживается в данном семействе адресов. Например, необязательный тип SOCK_RAW можно выбрать в вызове сокета , и реализация не поддерживает сокеты SOCK_RAW.
Всаеопнотсупп
10045
Операция не поддерживается.
Предпринятая операция не поддерживается для типа объекта, на который указывает ссылка. Обычно это происходит, когда дескриптор сокета для сокета, который не поддерживает эту операцию, пытается принять соединение на сокете датаграммы.
Всаепфносуппорт
10046
Семейство протоколов не поддерживается.
Семейство протоколов не было настроено в системе или не существует реализации для него. Это сообщение имеет немного отличающееся значение от ВСАЕАФНОСУППОРТ. однако в большинстве случаев он является взаимозаменяемым, и все функции Windows sockets, возвращающие одно из этих сообщений, также указывают всаеафносуппорт.
Всаеафносуппорт
10047
Семейство адресов не поддерживается семейством протоколов.
Использован адрес, несовместимый с запрошенным протоколом. Все сокеты создаются со связанным семейством адресов (то есть AF_INET для протоколов Интернета) и общим типом протокола (SOCK_STREAM). Эта ошибка возвращается, если неверно запрашивается неправильный протокол в вызове сокета или если для сокета используется адрес неправильного семейства, например в функции SendTo.
Всаеаддринусе
10048
Адрес уже используется.
Обычно допускается только одно использование каждого адреса сокета (протокол/IP-адрес/порт). Эта ошибка возникает, если приложение пытается привязать сокет к IP-адресу или порту, который уже использовался для существующего сокета, или к сокету, который не был закрыт должным образом, или к одному, который еще находится в процессе закрытия. Для серверных приложений, которым необходимо привязать несколько сокетов к одному и тому же номеру порта, рассмотрите возможность использования сетсоккопт (SO_REUSEADDR). Как правило, клиентским приложениям не требуется вызывать привязкуПодключение выбирает неиспользуемый порт автоматически. Когда BIND вызывается с подстановочным адресом (включающим ADDR_ANY), ошибка всаеаддринусе может быть отложена до тех пор, пока не зафиксирован указанный адрес. Это может произойти при вызове другой функции позже, включая Connect, Listen, всаконнектили всажоинлеаф.
Всаеаддрнотаваил
10049
Не удается назначить запрошенный адрес.
Запрошенный адрес недопустим в своем контексте. Это обычно приводит к попытке привязки к адресу, который не является допустимым для локального компьютера. Это также может быть вызвано подключением, SendTo, всаконнект, всажоинлеафили всасендто , если удаленный адрес или порт недействителен для удаленного компьютера (например, адреса или порта 0).
Всаенетдовн
10050
Сеть не работает.
Операция на сокете обнаружила отключение сети. Это может указывать на серьезные сбои в системе сети (стеке протоколов, на основе которого работает библиотека DLL Windows Sockets), интерфейсе сети или в самой локальной сети.
Всаенетунреач
10051
Сеть недоступна.
Операция сокета была предпринята к недостижимой сети. Обычно это означает, что локальное программное обеспечение не имеет маршрута, чтобы связаться с удаленным узлом.
Всаенетресет
10052
Сетевое подключение разорвано при сбросе.
Соединение разорвано из-за того, что операция проверки активности обнаруживает сбой во время выполнения операции. Его также можно вернуть с помощью сетсоккопт , если предпринимается попытка установить SO_KEEPALIVE для соединения, которое уже завершилось сбоем.
Всаеконнабортед
10053
Программное обеспечение вызвало отмену подключения.
Установленное подключение прервано программным обеспечением на главном компьютере, возможно, из-за истечения времени ожидания передачи данных или ошибки протокола.
Всаеконнресет
10054
Сброс подключения другим компьютером.
существующее соединение было принудительно завершено удаленным узлом. Это обычно происходит, если однорангическое приложение на удаленном узле внезапно остановлено, узел перезагружается, узел или удаленный сетевой интерфейс отключены, или удаленный узел использует жесткое закрытие (см. сетсоккопт для получения дополнительных сведений о параметре SO_LINGER на удаленном сокете). Эта ошибка также может возникнуть, если подключение разорвано из-за активности проверки активности, когда выполняется одна или несколько операций. Выполняемые операции завершились ошибкой с ВСАЕНЕТРЕСЕТ. Последующие операции завершаются сбоем с ВСАЕКОННРЕСЕТ.
Всаенобуфс
10055
Нет доступного места в буфере.
Не удалось выполнить операцию с сокетом, так как в системе недостаточно места в буфере или из-за переполнения очереди.
Всаеисконн
10056
Сокет уже подключен.
Запрос на подключение был сделан на уже подключенном сокете. Некоторые реализации также возвращают эту ошибку, если метод SendTo вызывается для подключенного SOCK_DGRAM сокета (для SOCK_STREAM сокетах параметр to в SendTo не учитывается), хотя другие реализации считают это допустимым.
Всаенотконн
10057
Сокет не подключен.
Запрос на отправку или получение данных запрещен, так как сокет не подключен и (при отправке через сокет датаграмм с помощью SendTo) адрес не указан. Любой другой тип операции также может возвратить эту ошибку, например SO_KEEPALIVE сетсоккопт , если соединение было сброшено.
Всаешутдовн
10058
Не удается выполнить отправку после отключения сокета.
Запрос на отправку или получение данных запрещен, так как работа сокета уже была завершена в этом направлении с предыдущим вызовом завершения работы . Вызывая Завершение работы , вы запрашиваете частичное замыкание сокета, которое является сигналом, который отправляет или получает или что больше не поддерживается.
Всаетуманирефс
10059
Слишком много ссылок.
Слишком много ссылок на некоторый объект ядра.
Всаетимедаут
10060
Истекло время ожидания подключения.
Попытка подключения не удалась, так как подключенная сторона не ответила должным образом по истечении определенного периода времени или не удалось установить соединение, так как подключенный узел не ответил.
Всаеконнрефусед
10061
Подключение отклонено.
Не удалось установить подключение, так как конечный компьютер отказался от него. Это обычно происходит при попытке подключиться к службе, которая неактивна на внешнем узле, то есть в том случае, если серверное приложение не работает.
Всаелуп
10062
Не удается преобразовать имя.
Не удается преобразовать имя.
Всаенаметулонг
10063
Слишком длинное имя.
Имя компонента или имени слишком длинное.
Всаехостдовн
10064
Узел не работает.
Сбой операции сокета, так как целевой узел не работает. Операция сокета обнаружила неработающий узел. Не запущена сетевая активность на локальном узле. Эти условия скорее всего помечаются ошибкой ВСАЕТИМЕДАУТ.
Всаехостунреач
10065
Нет маршрута к узлу.
Сделана попытка выполнить операцию на сокете для недоступного хоста. См. ВСАЕНЕТУНРЕАЧ.
Всаенотемпти
10066
Каталог не пуст.
Невозможно удалить каталог, который не является пустым.
Всаепроклим
10067
Слишком много процессов.
реализация Windowsных сокетов может иметь ограничение на количество приложений, которые могут использовать его одновременно. Сбой WSAStartup может завершиться с этой ошибкой, если достигнут предел.
Всаеусерс
10068
Превышена квота пользователя.
Исчерпана квота пользователя.
Всаедкуот
10069
Превышена квота диска.
Дисковая квота исчерпана.
Всаестале
10070
Ссылка на устаревший файловый обработчик.
Ссылка на обработчик файлов больше недоступна.
Всаеремоте
10071
Элемент является удаленным.
Элемент недоступен локально.
Всасиснотреади
10091
Сетевая подсистема недоступна.
эта ошибка возвращается функцией сбой wsastartup , если в настоящее время не удается выполнить реализацию сокетов Windows, так как базовая система, используемая для предоставления сетевых служб, в данный момент недоступна. Пользователи должны проверить следующее:
  • , что соответствующий DLL-файл Windows sockets находится в текущем пути.
  • что они не пытаются одновременно использовать более одной реализации Windows сокетов. Если в системе имеется несколько DLL-библиотек Winsock, убедитесь, что первая из них подходит для сетевой подсистемы, загруженной в данный момент.
  • документация по реализации сокетов Windows, чтобы убедиться в том, что все необходимые компоненты установлены и правильно настроены.
Всавернотсуппортед
10092
ВерсияWinsock.dll вне допустимого диапазона.
текущая реализация Windowsных сокетов не поддерживает версию спецификации Windowsных сокетов, запрошенную приложением. Убедитесь, что программа не обращается к старым версиям файлов DLL Windows Sockets.
Всанотинитиалисед
10093
Успешное выполнение сбой WSAStartup еще не выполнено.
Приложение не вызвало сбой WSAStartup или сбой WSAStartup . Приложение может получить доступ к сокету, владельцем которого является текущая активная задача (то есть при попытке совместного использования сокета между задачами), или всаклеануп был вызван слишком много раз.
Всаедискон
10101
Выполняется корректное завершение работы.
Возвращается всарекв и всареквфром , чтобы указать, что удаленная сторона запустила последовательность корректного завершения работы.
Всаеноморе
10102
Больше нет результатов.
Функция всалукупсервиценекст не может вернуть дополнительные результаты.
Всаеканцеллед
10103
Вызов отменен.
Вызов функции всалукупсервицеенд был выполнен, пока этот вызов все еще обрабатывается. Вызов отменен.
Всаеинвалидпроктабле
10104
Недопустимая таблица вызовов процедур.
Недопустимая таблица вызова процедуры поставщика услуг. Поставщик услуг вернул фиктивную таблицу процедур для Ws2_32.dll. Обычно это вызвано тем, что один или несколько указателей функций имеют значение NULL.
Всаеинвалидпровидер
10105
Недопустимый поставщик услуг.
Запрошенный поставщик услуг недопустим. Эта ошибка возвращается функциями вскжетпровидеринфо и WSCGetProviderInfo32 , если не удалось найти указанную запись протокола. Эта ошибка также возвращается, если поставщик услуг возвратил номер версии, отличный от 2,0.
Всаепровидерфаилединит
10106
Не удалось инициализировать поставщик услуг.
Не удалось загрузить или инициализировать запрошенного поставщика услуг. Эта ошибка возвращается, если не удалось загрузить библиотеку DLL поставщика услуг (сбойLoadLibrary ) или не удалось выполнить Вспстартуп или функцию нспстартуп поставщика.
Всасискаллфаилуре
10107
Сбой системного вызова.
Неудачный вызов системного вызова, который не должен быть успешным. Это универсальный код ошибки, возвращаемый при различных условиях.
Возвращается, когда системный вызов, который не должен завершаться ошибкой, завершается ошибкой. Например, если вызов ваитформултипливентс завершается ошибкой или одна из функций реестра не может работать с каталогами протокола или пространства имен.
Возвращается, когда поставщик не возвращает результат и не предоставляет расширенный код ошибки. Может указывать на ошибку реализации поставщика услуг.
WSASERVICE_NOT_FOUND
10108
Служба не найдена.
Такая служба неизвестна. Не удается найти службу в указанном пространстве имен.
WSATYPE_NOT_FOUND
10109
Тип класса не найден.
Указанный класс не найден.
WSA_E_NO_MORE
10110
Больше нет результатов.
Функция всалукупсервиценекст не может вернуть дополнительные результаты.
WSA_E_CANCELLED
10111
Вызов отменен.
Вызов функции всалукупсервицеенд был выполнен, пока этот вызов все еще обрабатывается. Вызов отменен.
Всаерефусед
10112
Запрос к базе данных отклонен.
Запрос к базе данных не выполнен из-за того, что он был активно отклонен.
WSAHOST_NOT_FOUND
11001
Сервер не найден.
Такой узел не существует. Имя не является официальным именем узла или псевдонимом или не может быть найдено в запрашиваемых базах данных. Эта ошибка также может возвращаться для запросов протокола и службы и означает, что указанное имя не найдено в соответствующей базе данных.
WSATRY_AGAIN
11002
Неполномочный узел не найден.
Обычно это временная ошибка во время разрешения имени узла и означает, что локальный сервер не получил ответ от полномочного сервера. Возможно, повторная попытка через некоторое время будет успешной.
WSANO_RECOVERY
11003
Это неустранимая ошибка.
Это означает, что во время уточняющего запроса базы данных произошла неустранимая ошибка. Это может быть вызвано тем, что не удалось найти файлы базы данных (например, файлы узлов, службы или ПРОТОКОЛы, совместимые с BSD), или запрос DNS был возвращен сервером с серьезной ошибкой.
WSANO_DATA
11004
Допустимое имя, нет записи данных запрошенного типа.
Запрошенное имя является допустимым и найдено в базе данных, но для него не разрешены соответствующие данные. Обычным примером для этого является попытка преобразования имени узла в адрес (с помощью gethostbyname или всаасинкжесостбинаме), которая использует DNS (сервер доменных имен). Возвращается запись MX, но отсутствует запись, указывающая, что сам узел существует, но недоступен напрямую.
WSA_QOS_RECEIVERS
11005
Получатели QoS.
Получен по крайней мере один резерв качества обслуживания.
WSA_QOS_SENDERS
11006
Отправители QoS.
Получен по крайней мере один путь отправки QoS.
WSA_QOS_NO_SENDERS
11007
Нет отправителя QoS.
Отправители QoS отсутствуют.
WSA_QOS_NO_RECEIVERS
11008
Служба QoS не имеет получателей.
Нет получателей QoS.
WSA_QOS_REQUEST_CONFIRMED
11009
Запрос на качество обслуживания подтвержден.
Запрос на резервирование QoS подтвержден.
WSA_QOS_ADMISSION_FAILURE
11010
Ошибка при допуске QoS.
Произошла ошибка QoS из-за нехватки ресурсов.
WSA_QOS_POLICY_FAILURE
11011
Сбой политики качества обслуживания.
Запрос QoS был отклонен, так как система политики не смогла выделить запрошенный ресурс в существующей политике.
WSA_QOS_BAD_STYLE
11012
Неправильный стиль качества обслуживания.
Обнаружен неизвестный или конфликтующий стиль QoS.
WSA_QOS_BAD_OBJECT
11013
Недопустимый объект QoS.
Обнаружена проблема в некоторых частях филтерспек или в общем буфере конкретного поставщика.
WSA_QOS_TRAFFIC_CTRL_ERROR
11014
Ошибка управления трафиком QoS.
Ошибка в API базового управления трафиком (TC), так как универсальный запрос QoS был преобразован для локального применения с помощью API TC. Это может быть вызвано ошибкой нехватки памяти или внутренней ошибкой поставщика QoS.
WSA_QOS_GENERIC_ERROR
11015
Общая ошибка QoS.
Общая ошибка QoS.
WSA_QOS_ESERVICETYPE
11016
Ошибка типа службы QoS.
В фловспек QoS обнаружен недопустимый или Нераспознанный тип службы.
WSA_QOS_EFLOWSPEC
11017
Ошибка QoS фловспек.
В структуре QoS обнаружена недопустимая или нераспознанная фловспек.
WSA_QOS_EPROVSPECBUF
11018
Недопустимый буфер поставщика качества обслуживания.
Недопустимый буфер, зависящий от поставщика QoS.
WSA_QOS_EFILTERSTYLE
11019
Недопустимый стиль фильтра качества обслуживания.
Использован недопустимый стиль фильтра качества обслуживания.
WSA_QOS_EFILTERTYPE
11020
Недопустимый тип фильтра качества обслуживания.
Использован недопустимый тип фильтра качества обслуживания.
WSA_QOS_EFILTERCOUNT
11021
Неверное количество фильтров QoS.
В ФЛОВДЕСКРИПТОР указано неверное число Филтерспекс качества обслуживания.
WSA_QOS_EOBJLENGTH
11022
Недопустимая длина объекта качества обслуживания.
В буфере, зависящем от поставщика QoS, был указан объект с недопустимым полем Обжектленгс.
WSA_QOS_EFLOWCOUNT
11023
Неверное количество потоков качества обслуживания.
В структуре QoS задано неверное число дескрипторов потока.
WSA_QOS_EUNKOWNPSOBJ
11024
Нераспознанный объект QoS.
В буфере, зависящем от поставщика QoS, обнаружен нераспознанный объект.
WSA_QOS_EPOLICYOBJ
11025
Недопустимый объект политики качества обслуживания.
В буфере, зависящем от поставщика QoS, обнаружен недопустимый объект политики.
WSA_QOS_EFLOWDESC
11026
Недопустимый дескриптор потока качества обслуживания.
В списке дескрипторов потока обнаружен недопустимый дескриптор потока качества обслуживания.
WSA_QOS_EPSFLOWSPEC
11027
Недопустимый фловспек, зависящий от поставщика QoS.
В буфере, зависящем от поставщика QoS, обнаружено недопустимое или непротиворечивое фловспек.
WSA_QOS_EPSFILTERSPEC
11028
Недопустимый филтерспек, зависящий от поставщика QoS.
В буфере, зависящем от поставщика QoS, обнаружен недопустимый ФИЛТЕРСПЕК.
WSA_QOS_ESDMODEOBJ
11029
Недопустимый объект режима отклонения фигуры качества обслуживания.
В буфере, зависящем от поставщика QoS, обнаружен недопустимый объект режима удаления фигуры.
WSA_QOS_ESHAPERATEOBJ
11030
Недопустимый объект частоты формирования качества обслуживания.
В буфере, зависящем от поставщика QoS, обнаружен недопустимый объект частоты формирования.
WSA_QOS_RESERVED_PETYPE
11031
Зарезервированный тип элемента QoS политики.
Зарезервированный элемент политики обнаружен в буфере, зависящем от поставщика QoS.

Требования

Требование Значение
Заголовок
Winsock2. h;
Winerror. h

См. также раздел

Коды ошибок — код возврата, h _ и всажетластеррор

Обработка ошибок Winsock

FormatMessage

всажетластеррор