ВУЗ:
Составители:
Рубрика:
57
Код ошибки Описание
WSANOTINITIALISED
Перед использованием функции необходимо вызвать функ-
цию WSAStartup
WSAENETDOWN
Сбой в сети
WSAENOTCONN
Сокет не был подсоединен
WSAEINTR
Выполнение функции было отменено при помощи функции
WSACancelBlockingCall
WSAEINPROGRESS Выполняется блокирующая функция интерфейса Windows
Sockets
WSAENOTSOCK
Указанный в параметре дескриптор не есть дескриптор соке-
та
WSAESHUTDOWN Сокет был закрыт функцией shutdown
WSAEWOULDBLOCK
Сокет отмечен как неблокирующий, но запрошенная опера-
ция приведет к блокировке
WSAEMGSIZE
Размер пакета данных превышает размер буфера, в результа-
те чего принятый пакет был обрезан
WSAEINVAL Сокет не был подключен функцией bind
WSAECONNABORTED
Сбой из-за слишком большой задержки или по другой при-
чине
WSAECONNRESET
Разрыв соединения удаленным узлом
Передача и прием данных в цикле может привести к блокировке работы
приложения. Если это неприемлемо, следует воспользоваться асинхронными
расширениями интерфейса
Windows Sockets
.
Ниже приведен фрагмент исходного кода приложения
SERVER
, демонст-
рирующий асинхронный прием данных.
После установки канала связи приложение вызывает функцию
WSAAsyncSelect
, указывая ей в качестве последнего параметрам комбинацию
констант
FD_READ
и
FD_CLOSE
. При этом функция главного окна приложе-
ния будет получать сообщение
WSA_NETEVENT
в тот момент, когда чтение
данных не вызовет блокировки приложения.
#define WSA_NETEVENT (WM_USER+2)
rc = WSAAsyncSelect(srv_socket,
hWnd,
WSA_NETEVENT,
FD_READ | FD_CLOSE);
При необходимости выполнения асинхронной посылки данных следует
указать функции
WSAAsyncSelect
еще и параметр
FD_WRITE
.
При успешном выполнении функция
WSAAsyncSelect
возвращает
NULL
,
при ошибке -
SOCKET_ERROR
.
Код ошибки Описание
WSANOTINITIALISED Перед использованием функции необходимо вызвать функ-
цию WSAStartup
WSAENETDOWN Сбой в сети
WSAENOTCONN Сокет не был подсоединен
WSAEINTR Выполнение функции было отменено при помощи функции
WSACancelBlockingCall
WSAEINPROGRESS Выполняется блокирующая функция интерфейса Windows
Sockets
WSAENOTSOCK Указанный в параметре дескриптор не есть дескриптор соке-
та
WSAESHUTDOWN Сокет был закрыт функцией shutdown
WSAEWOULDBLOCK Сокет отмечен как неблокирующий, но запрошенная опера-
ция приведет к блокировке
WSAEMGSIZE Размер пакета данных превышает размер буфера, в результа-
те чего принятый пакет был обрезан
WSAEINVAL Сокет не был подключен функцией bind
WSAECONNABORTED Сбой из-за слишком большой задержки или по другой при-
чине
WSAECONNRESET Разрыв соединения удаленным узлом
Передача и прием данных в цикле может привести к блокировке работы
приложения. Если это неприемлемо, следует воспользоваться асинхронными
расширениями интерфейса Windows Sockets.
Ниже приведен фрагмент исходного кода приложения SERVER, демонст-
рирующий асинхронный прием данных.
После установки канала связи приложение вызывает функцию
WSAAsyncSelect, указывая ей в качестве последнего параметрам комбинацию
констант FD_READ и FD_CLOSE. При этом функция главного окна приложе-
ния будет получать сообщение WSA_NETEVENT в тот момент, когда чтение
данных не вызовет блокировки приложения.
#define WSA_NETEVENT (WM_USER+2)
rc = WSAAsyncSelect(srv_socket,
hWnd,
WSA_NETEVENT,
FD_READ | FD_CLOSE);
При необходимости выполнения асинхронной посылки данных следует
указать функции WSAAsyncSelect еще и параметр FD_WRITE.
При успешном выполнении функция WSAAsyncSelect возвращает NULL,
при ошибке - SOCKET_ERROR.
57
Страницы
- « первая
- ‹ предыдущая
- …
- 55
- 56
- 57
- 58
- 59
- …
- следующая ›
- последняя »
