Программное обеспечение компьютерных сетей и информационных систем. Баканов В.М. - 55 стр.

UptoLike

Составители: 

- 55 -
WSAENOTSOCK
Указанный в параметре дескриптор не указывает на сокет
WSAESHUTDOWN Сокет не был закрыт функцией shutdown
WSAEWOULDBLOCK
Сокет отмечен как неблокирующий, но запрошенная опера-
ция приведет к блокировке
WSAEMSGSIZE Был использован сокет типа SOCK_DGRAM (предназна-
ченный для передачи датаграмм), но при этом размер пакета
данных превышает максимально допустимый для данной
реализации интерфейса Windows Sockets
WSAEINVAL Сокет не был подключен функцией bind
WSAECONNABORTED
Сбой соединения из-за слишком большой задержки или по
другой причине
WSAECONNRESET
Разрыв соединения удаленным узлом сети
При выполнении функции recv могут возникнуть следующие ошибки
Код ошибки Описание
WSANOTINITIALISED
Перед использованием функции необходимо вызвать функ-
цию WSAStartup
WSAENETDOWN
Сбой в сети
WSAENOTCONN
Сокет не был подсоединен
WSAEINTR
Выполнение функции было отменено при помощи функции
WSACancelBlockingCall
WSAEINPROGRESS Выполняется блокирующая функция интерфейса Windows
Sockets
WSAENOTSOCK
Указанный в параметре дескриптор не есть дескриптор соке-
та
WSAESHUTDOWN Сокет был закрыт функцией shutdown
WSAEWOULDBLOCK
Сокет отмечен как неблокирующий, но запрошенная опера-
ция приведет к блокировке
WSAEMGSIZE
Размер пакета данных превышает размер буфера, в результа-
те чего принятый пакет был обрезан
WSAEINVAL Сокет не был подключен функцией bind
WSAECONNABORTED
Сбой из-за слишком большой задержки или по другой при-
чине
WSAECONNRESET
Разрыв соединения удаленным узлом
Передача и прием данных в цикле может привести к блокировке работы
приложения. Если это неприемлемо, следует воспользоваться асинхронными
расширениями интерфейса Windows Sockets.
Ниже приведен фрагмент исходного кода приложения SERVER, демон-
стрирующий асинхронный прием данных [13].
После установки канала связи приложение вызывает функцию
WSAAsyncSelect, указывая ей в качестве последнего параметрам комбина-
цию констант
FD_READ и FD_CLOSE. При этом функция главного окна
приложения будет получать сообщение WSA_NETEVENT в тот момент, ко-
гда чтение данных не вызовет блокировки приложения.
                                   - 55 -


WSAENOTSOCK           Указанный в параметре дескриптор не указывает на сокет
WSAESHUTDOWN          Сокет не был закрыт функцией shutdown
WSAEWOULDBLOCK        Сокет отмечен как неблокирующий, но запрошенная опера-
                      ция приведет к блокировке
WSAEMSGSIZE           Был использован сокет типа SOCK_DGRAM (предназна-
                      ченный для передачи датаграмм), но при этом размер пакета
                      данных превышает максимально допустимый для данной
                      реализации интерфейса Windows Sockets
WSAEINVAL             Сокет не был подключен функцией bind
WSAECONNABORTED       Сбой соединения из-за слишком большой задержки или по
                      другой причине
WSAECONNRESET         Разрыв соединения удаленным узлом сети

    При выполнении функции recv могут возникнуть следующие ошибки

     Код ошибки                               Описание
 WSANOTINITIALISED    Перед использованием функции необходимо вызвать функ-
                      цию WSAStartup
 WSAENETDOWN          Сбой в сети
 WSAENOTCONN          Сокет не был подсоединен
 WSAEINTR             Выполнение функции было отменено при помощи функции
                      WSACancelBlockingCall
 WSAEINPROGRESS       Выполняется блокирующая функция интерфейса Windows
                      Sockets
 WSAENOTSOCK          Указанный в параметре дескриптор не есть дескриптор соке-
                      та
 WSAESHUTDOWN         Сокет был закрыт функцией shutdown
 WSAEWOULDBLOCK       Сокет отмечен как неблокирующий, но запрошенная опера-
                      ция приведет к блокировке
 WSAEMGSIZE           Размер пакета данных превышает размер буфера, в результа-
                      те чего принятый пакет был обрезан
 WSAEINVAL            Сокет не был подключен функцией bind
 WSAECONNABORTED      Сбой из-за слишком большой задержки или по другой при-
                      чине
 WSAECONNRESET        Разрыв соединения удаленным узлом

     Передача и прием данных в цикле может привести к блокировке работы
приложения. Если это неприемлемо, следует воспользоваться асинхронными
расширениями интерфейса Windows Sockets.
     Ниже приведен фрагмент исходного кода приложения SERVER, демон-
стрирующий асинхронный прием данных [13].
     После установки     канала связи приложение вызывает функцию
WSAAsyncSelect, указывая ей в качестве последнего параметрам комбина-
цию констант FD_READ и FD_CLOSE. При этом функция главного окна
приложения будет получать сообщение WSA_NETEVENT в тот момент, ко-
гда чтение данных не вызовет блокировки приложения.