Главная страница

Программирование в сетях Windows. Э. Джонс, Д. Оланд


Скачать 2.88 Mb.
НазваниеЭ. Джонс, Д. Оланд
АнкорПрограммирование в сетях Windows.pdf
Дата12.10.2017
Размер2.88 Mb.
Формат файлаpdf
Имя файлаПрограммирование в сетях Windows.pdf
ТипКнига
#9346
страница48 из 50
1   ...   42   43   44   45   46   47   48   49   50
Прерванный вызов функции. Блокирующий вызов прерывается вы- зовом WSACancelBlockingCall
10009-WSAEBADF
Неверный дескриптор файла. В ОС Microsoft Windows СЕ такую ошиб- ку может возвратить функция socket, она означает, что общий последователь- ный порт занят
10013-WSAEACCES
Доступ запрещен. Была сделана попытка обращения к запрещенному сокету Обычно эта ошибка возникает при попытке использовать широко- вещательный адрес в функциях sendto или WSASendTo, когда широковещание не разрешено параметрами setsockopt и SOJ3ROADCAST
10014-WSAEFAULT
Недопустимый адрес. Функции Winsock передан недопустимый указа- тель адреса Ошибка также возникает, когда указан слишком маленький буфер
10022-WSAE1NVAL
Недопустимый параметр. Указано недопустимое значение параметра,
например, контрольного кода в функции WSAIoctl Эта же ошибка может воз- никнуть из-за текущего состояния сокета, например, при вызове функций
accept или WSAAccept на сокете, не находящемся в состоянии прослушивания
W024-WSAEMFILE
Открыто слишком много файлов. Открыто слишком много сокетов
Обычно системы доступа Microsoft ограничены только количеством доступ- ных ресурсов ОС
1003 5 - WSAEWOULDBLOCK
Ресурс временно не доступен. Ошибка наиболее часто возвращается неблокирующими сокетами, на которых запрошенную операцию (напри- мер, вызов функции connect) нельзя выполнить немедленно
10036-WSAEINPROGRESS
Операция выполняется. Блокирующая операция находится в процес- се выполнения Ошибка появляется редко, только при разработке 16-битнох приложений Winsock

Приложение С Коды ошибок Winsock 569 10057-WSAEALREADY
Действие уже выполняется. На неблокирующем сокете происходит попытка выполнить операцию, которая уже вызвана и выполняется напри- мер, при повторном вызове на неблокирующем сокете функции connect или
WSAConnect во время установления соединения Ошибка также возникает,
когда поставщик службы находится в процессе выполнения функции обрат- ного вызова (для функций, поддерживающих обратный вызов)
10058-WSAENOTSOCK
Операция на недопустимом сокете. Ошибка может быть возвращена любой функцией Winsock параметром которой является дескриптор типа
SOCKET Означает, что задан неверный дескриптор сокета
WO59-WSAEDESTADDRREQ
Требуется адрес назначения. Ошибка появляется, если пропущен адрес например, при вызове функции sendto с адресом назначения INADDR_ANY
10040-WSAEMSGSIZE
Слишком длинное сообщение. Сообщение отправляется на дейтаг- раммный соке г размером больше внутреннего буфера Ошибка также воз- никает, если сообщение больше, чем позволяют ограничения сети Еще одна причина появления данной ошибки — буфер слишком мал, чтобы вместить полученную дейтаграмму
10041-WSAEPROTOTYPE
Неверный тип протокола для сокета. При вызове socket или WSASocket
указан протокол, не поддерживающий семантику данного типа сокета Напри- мер, попытка создать IP-сокет типа SOCKSTREAM с протоколом IPPROTOUDP
W042-WSAENOPROTOOPT
Неверный параметр протокола. Неизвестный, не поддерживаемый или неверный параметр сокета Ошибка также возникает, если уровень ука зан при вызове getsockopt или setsockopt
10045-WSAEPROTONOSUPPORT
Не поддерживаемый протокол. Запрошенный протокол не установ- лен в системе Например, попытка создать TCP- или UDP-сокет, при том, что в системе не установлен протокол TCP/IP
10044-WSAESOCKTNOSUPPORT
Не поддерживаемый тип сокета. Данное семейство адресов не под держивает указанный тип сокета Например, запрос сокета типа SOCK RAVi
по протоколу, не поддерживающему простые сокеты
10045-WSAEOPNOTSUPP
Не поддерживаемая операция. Объект обращения не поддерживает запрошенную операцию Обычно возникает при попытке вызвать функции
Winsock на сокете, не поддерживающем данную операцию Например, ассер
или WSAAccept на дейтаграммном сокете
10046-WSAEPFNOSUPPORT
Не поддерживаемое семейство протоколов. Запрошенное семействе протоколов не существует или не установлено в системе В большинстве слу чаев ошибка означает то же, что и более частая — WSAEAFNOSUPPORT

5 7 0 Приложение С Коды ошибок Winsock
1 0 0 4 7 - WSAEAFNOSUPPORT
Семейство адресов не поддерживает запрошенную операцию.
Попытка выполнить операцию, не поддерживаемую данным типом сокета:
например, при вызове sendto или WSASendTo на сокете типа SOCKJSTREAM.
Ошибка также возникает при вызове socket или WSASocket с указанием невер- ной комбинации семейства адресов, типа сокета и протокола.
W048-WSAEADDRINUSE
Адрес уже используется. При обычных обстоятельствах только один сокет может использовать каждый адрес сокета. Например, адрес 1Р-сокета состоит из локального IP-адреса и номера порта. Ошибка обычно связана с функциями bind, connect и WSAConnect. Для функции setsockopt может быть задан параметр SO_REUSEADDR, разрешающий использование несколькими сокетами одного и того же локального IP-адреса и порта (см. главу 9)-
10049-WSAEADDRNOTAVAIL
Невозможно назначить запрошенный адрес. При вызове API указан недопустимый для данной функции адрес: например, в функции bind задан IP- адрес, не относящийся к локальному IP-интерфейсу. Также ошибка может воз- никнуть при указании порта 0 удаленной машины, с которой производится соединение, в функциях connect, WSAConnect, sendto, WSASendTo, и WSAJoinLeaf.
10050-WSAENETDOWN
Сеть не работает. Операция не может быть выполнена из-за неполадок в сети, стеке, сетевом интерфейсе или с локальной сети.
10051-WSAENETUNREACH
Сеть недоступна. Попытка произвести операцию в недоступной сети:
локальный узел не знает, как достичь удаленный. Другими словами, не суще- ствует известного маршрута к месту назначения.
1OO52-WSAENETRESET
Сеть разорвала соединение при сбросе. Соединение было разорва-,
но из-за невозможности доставки сообщений о его продолжении. Ошибка также возникает при попытке задать параметр SO_KEEPALIVE в функции
setsockopt, когда соединение уже разорвано.
100 5 Ъ-WSAECONNABORTED
Преждевременный разрыв соединения из-за ошибки ПО. Про- изошла ошибка протокола или истек таймаут.
10054- WSAECONNRESET
Соединение разорвано партнером по связи. Установленное соеди- нения было принудительно закрыто удаленным узлом. Ошибка возникает,
если удаленный процесс не работоспособен (например, при ошибке обра- щения к памяти или сбое аппаратуры) или если на сокете было произведе- но принудительно закрытие. Сокет можно настроить для резкого закрытия с помощью параметра SOJJNGER и функции setsockopt (см. главу 9)-
1005 5- WSAENOBUFS
Свободное место в буфере закончилось. Запрошенная операция не может быть произведена, так как системе не хватает свободного места в бу- фере.

Приложение С Коды ошибок Wmsock 57'
1 0 0 5 6 - W S A E I S C O N N
С сокетом уже установлено соединение. Попытка установить соеди нение с сокетом, который уже используется. Ошибка может произойти ка:
на дейтаграммных, так и на потоковых сокетах. При использовании дейтаг раммного сокета ошибка возникает при вызове sendto или WSASendTo, eon для установления дейтаграммного соединения вызывались функции соппес
или WSAConnect.
10057-WSAENOTCONN
Нет соединения с сокетом. Производится запрос на отправление ил!
получение данных на сокете, соединение с которым в данный момент н установлено.
10058-WSAESHUTDOWN
Отправление невозможно после отключения сокета. Сокет уж<
частично закрыт вызовом функции shutdown, но к нему делается запрос на отправление или получение данных. Ошибка возникает только на отключен!
ных направлениях потока данных-, например, при попытке отправить дан|
ные после вызова shutdoivn.
10060-WSAETIMEDOUT
Время ожидания операции истекло. Сделан запрос на соединение но удаленный компьютер не отвечает должным образом (или вообще н отвечает) по истечении определенного промежутка времени. Ошибка обыч но возникает, когда заданы параметры сокета SO_SNDTIMEO и SORCVTIMEC
или при вызове функций connect и WSAConnect (см. главу 9)-
10061-WSAECONNREFUSED
В соединении отказано. Компьютер-адресат отказывает в установлю нии соединения, обычно из-за того, что на удаленной машине нет приложе ния, обслуживающего соединение с указанным адресом.
10064-WSAEHOSTDOWN
Узел не работает. Попытка выполнить операцию не удалась, так как узе^
назначения выключен. Тем не менее, приложение, скорее всего, получи'
ошибку WSAETIMEDOUT, обычную при попытке установить соединение.
1006 5-WSAEHOSTUNREACH
Не известен путь к узлу. Был произведен запрос на выполнение one рации на недоступном узле. Эта ошибка похожа на WSAENETUNREACH.
10067-WSAEPROCUM
С л и ш к о м много процессов. Некоторые поставщики служб WinsocJ
задают предел количества процессов, которые могут обращаться к ним o/i новременно.
10091 - WSASYSNOTREADY
Подсистема сети не доступна. Ошибка возвращается при обращений к WSAStartup, когда поставщик службы не может отработать из-за того, чт<|
базовая система, предоставляющая услуги, не доступна.
10092-WSAVERNOTSUPPORTED
Некорректная версия Winsock.dll. Запрошенная версия поставщик|
службы Winsock не поддерживается.

5 7 2 Приложение С Коды ошибок Winsock
10095-WSANOTINIT1ALJSED
Winsock не инициализирован. Вызов WSAStartup не удался.
10101 - WSAEDISCON
Идет корректное завершение работы. Ошибка возвращается функ- циями WSARecv и WSARecvFrom, указывая, что удаленный партнер находится в процессе корректного завершения работы Возникает при использовании протоколов, ориентированных на передачу сообщений, таких, как ATM.
10102-WSAENOMORE
Более з а п и с е й не найдено. Ошибка возвращается функцией WSALoo-
kupServiceNext и означает, что больше нет дополнительных записей. Она аналогична ошибке WSA_E_NO_MORE. Приложения должны проверять воз- врат обеих этих ошибок.
10W3-WSAECANCELLED
Операция отменена. Ошибку возвращает WSALookupServiceNext, если во время отработки этой функции был вызов WSALookupServiceEnd. Аналогич- на WSA_E_CANCELLED. Приложения должны проверять возврат обеих оши- бок.
10104-WSAEINVALIDPROCTABLE
Неверная таблица вызовов процедуры. Ошибка обычно возвраща- ется поставщиком службы, если в таблице процедур содержатся недопусти- мые записи (см. главу 14).
10105 -WSAEINVAUDPROVIDER
Недопустимый поставщик службы. Поставщик не может установить корректную версию Winsock, необходимую для правильного функциониро- вания.
101Q6-WSAEPROVIDERFAILEDINIT
Поставщик службы не инициализирован. Поставщик не может за- грузить требуемые библиотеки (DLL).
10107'-WSASYSCALLFAILURE
Сбой системного вызова. Неблагоприятный исход системного вызо- ва, который не должен давать сбой.
10108-WSASERV1CE_NOT_FOUND
Не н а й д е н о такой службы. Запрошенная служба не найдена в данном пространстве имен. Ошибка обычно возникает при работе функций регис- трации и разрешения имен при запросе служб (см. главу 10).
10109-WSA7YPE_NOT_FOUND
Не найден тип класса. Ошибка также относится к функциям регистрации и разрешения имен. Когда регистрируется экземпляр службы, то он должен ссы- латься на класс службы, заданный ранее функцией WSAInsta/lServiceClass.
10110-WSA_E_NO_MORE
Записей более не найдено. Ошибка возвращается функцией WSALoo-
kupServiceNext и аналогична WSAENOMORE. Приложения должны проверять возврат обеих этих ошибок.

Приложение С Коды ошибок Winsock 573
^ 1 0 1 1 1 -WSA_E_CANCELLED
4 Операция отменена. Ошибку возвращает WSALookupServiceNext, если во время отработки этой функции был вызов WSALookupServiceEnd. Аналогич- на WSAECANCELLED. Приложения должны проверять возврат обеих этих ошибок.
10112 - WSAEREFUSED
Запрос отклонен. Запрос к базе данных не удался.
11001-WSAHOSTNOTJFOUND
Узел не найден. Ошибку возвращают gethostbyname и gethostbyaddr, ука зывая, что полномочный узел не найд^
1 \002-WSATRY_AGAlN
Неполномочный узел не найден. Не был найден неполномочныЛ
узел, либо произошла ошибка в работе сервера. Ошибка связана с gethost
byname и gethostbyaddr.
\1005-WSANO_RECOVERY
Произошла неустранимая ошибка. Ошибка связана с gethostbyname
и gethostbyaddr. Следует попытаться выполнить операцию еще раз.
11004-WSANOJDATA
Не найдено записей данных запрошенного типа. Не найдено запи сей данных запрошенного типа, хотя заданное имя было верным. Ошибка связана с gethostbyname и gethostbyaddr.
1100 5 - WSA_QOS RECEIVERS
Получено минимум одно сообщение резервирования. Минимум один процесс в сети хочет получать трафик Quality of Service (QoS). Значение связано с реализацией QoS в IP и, по сути, ошибкой не является (см. главу 12.).
1 \006-WSA_QOS_SENDERS
Получено минимум одно сообщение пути. Минимум один процесс в сети хочет отправлять трафик QoS. Значение является сообщением о со- стоянии.
11007 -WSA_QOS_NO_SENDERS
Нет отправителей QoS. Более не существует процессов, которые хоте- ли бы отправлять данные QoS (см. главу 12).
1 W08-WSA_QOS_NO_RECEIVERS
Нет получателей QoS. Более не существует процессов, которые хотели бы получать данные QoS (см. главу 12).
1 \0Q9-WSA_QOS_REQUEST_CONFIRMED
Запрос на резервирование подтвержден. Утвердительный ответ на запрос о резервировании пропускной способности, который могут выдавать приложения QoS (см. главу 12).
11010-WSA_QOS_ADMISSION_FAILURE
Ошибка из-за недостаточности ресурсов. Не хватило ресурсов для удовлетворения запроса на пропускную способность QoS.

5 7 4 Приложение С Коды ошибок Wmsock
1 1 0 1 1 -WSA_QOS POLICYJAILURE
Неверные реквизиты. Пользователь не владеет необходимыми полно- мочиями, или заданные реквизиты не позволяют выполнить запрос резер- вирования QoS.
11012-WSA_QOS_BAD_STYLE
Неизвестный или противоречивый стиль. Приложения QoS могут задавать разные стили фильтрования для данного сеанса (см. главу 12).
11013 - WSA_QOS_BAD_OBJECT
Неверная структура FILTERSPEC или специфичный для поставщи-
ка объект. Ошибка в структуре FILTERSPEC или специфичных для постав- щика буферах объекта QoS (см. главу 12).
1 \Q\A-WSA_QOS_TRAFFIC_CTRL_ERROR
Проблемы с FLOWSPEC. У компонента управления трафиком появилась проблема с параметрами FLOWSPEC, переданными в составе объекта QoS.
11015-WSA_QOS_GENERIC_ERROR
Общая ошибка QoS. Универсальная ошибка, возвращаемая, когда не применимы другие ошибки QoS.
6-WSA_INVALID_HANDLE
Указан неверный объект события. Функции WSAWaitForMultipleEvents
передан неверный описатель. Ошибка Win32, появляется при использовании функций Winsock, соответствующих функциям Win32.
8-WSA_NOT_ENOUGH_MEMORY
Не достаточно памяти. Для выполнения операции не хватает свобод- ной памяти, ошибка Win32.
87-WSAJNVAI1D_PARAMETER
Один или несколько неверных параметров. Функции передан не- верный параметр, ошибка Win32. Также возникает при работе WSAWaitFor-
MultipleEvents, когда задан неверный параметр счетчика событий.
2 5 8 - WSA_WAIT_TIMEOUT
Таймаут операции истек. Перекрытая операция не завершилась в по- ложенное время, ошибка Win32.
995-WSA_OPERATION_ABORTED
Перекрытая операция прервана. Перекрытая операция ввода-выво- да отменена из-за закрытия сокета, ошибка Win32. Также возникает при вы- полнении команды SIOFLUSH.
996-WSAJOJNCOMPLETE
Объект события для перекрытого ввода-вывода не свободен. При вызове WSAGetOverlappedResults перекрытая операция ввода-вывода не завер- шена, ошибка Win32.
997-WSA_IO_PENDING
Перекрытая операция завершится позже. При перекрытом вызове ввода-вывода операция отложена и завершится позже, ошибка Win32 (см.
главу 8).

\ От авторов
Мы хотим поблагодарить всех, кто внес свой вклад в создание этой книги.
Особой благодарности заслуживает Вей Хуа (Wei Hua), разработавший все примеры Visual Basic для прилагаемого компакт-диска. Вей также консульти- ровал нас по поводу портов завершения ввода-вывода и поставщиков транс- портных служб в протоколе интерфейса поставщика служб (SPI) Winsock 2.
Спасибо Берри Баттеркли (Barry Butterklee) за пояснения по вопросам, ка- сающимся портов завершения ввода-вывода. Берри также проверил главу <
QoS и много сделал, чтобы информация в ней была правильной и точной
Амол Дешпенд (Amol Deshpande) предоставил ценную информацию об описателях устанавливаемой файловой системы (IFS) многоуровневых по- ставщиков служб Winsock 2. Он также помог нам как эксперт по отладке программ при разработке примера пакета данных, описывающих состояние сети (link-state packet, LSP).
Фрэнк Ли (Frank Li) предоставил подлинный пример регистрации и раз- решения имен (RNR), который послужил основой главы 10. Фрэнк также разработал некоторые примеры IP Helper, вошедшие в состав прилагаемого к книге компакт-диска.
Арвинд Мерчинг (Arvind Murching) и Аншуль Дхир (Anshul Dhir) прояс нили многие вопросы, касающиеся поставщика ATM для Winsock.
Алекс Чоу (Alex Choe), разбирающийся практически во всех современных сетевых протоколах, помог нам с описанием деталей функционированш протокола IPX/SPX, вошедшим в главу о семействе адресов Winsock.
Кен Эванс (Ken Evans) описал и объяснил многие структуры данных ДЛ5
интерфейса прикладного программмирования IP Helper, определение кото рых приведено в Приложении В.
Фрэнк Ким (Frank Kim) и Дэвид Моуэрс (David Mowers) помогли расска зать о системе безопасности Windows NT, которая используется перенапра вителем Windows, почтовыми ящиками и именованными каналами.
Мэтт Ниблер (Matt Nibler) выверил технические сведения о перенапра вителе Windows, которому посвящена глава 2.
Гэри Юкиш (Gary Yukish) оказал помощь в пояснении возможностей сер вера удаленного доступа.
Сахин Кукрейа (Sachin Kukreja) ответил на многие вопросы о QoS.
И наконец, Мазахир «Маази» Пунавала (Mazahir "Maaaazy" Poonawala) npe доставил пример RAS для компакт-диска.
Мы также благодарны группе по работе с документацией Microsoft Platforn
SDK за их великодушное и активное участие. Хотим выразить признатель ность Ребекке Маккей (Rebecca McKay) и Донни Камерон (Donnie Cameron из Microsoft Press. Редактирование Ребекки сделало книгу доступной для чи тателя. Донни занималась выверкой точности технической информации прекрасно справилась с этим нелегким делом.
1   ...   42   43   44   45   46   47   48   49   50


написать администратору сайта