ВУЗ:
Составители:
Рубрика:
- 50 -
Через параметр sock передается сокета, находящегося в режиме приема
для выполнения ожидания. Параметр addr должен содержать адрес буфера, в
который будет записан адрес узла, подключившегося к серверу (размер этого
буфера должен быть записан в целочисленной переменной, адрес которой
передается через параметр addrlen).
Список возможных кодов ошибки для функции accept приведен ниже
Код ошибки Описание
WSANOTINITIALISED
Перед использованием функции необходимо вызвать функ-
цию WSAStartup
WSAENETDOWN
Сбой в сети
WSAEFAULT Значение параметра addrlen меньше размера структуры ад-
реса
WSAEINTR
Выполнение функции было отменено при помощи функции
WSACancelBlockingCall
WSAEINPROGRESS Выполняется блокирующая функция интерфейса Windows
Sockets
WSAEINVAL Перед вызовом функции accept не была вызвана функция
listen
WSAEMFILE
Нет доступных дескрипторов
WSAENOBUFS
Установлено слишком много соединений
WSAENOTSOCK
Указанный в параметре дескриптор не является дескрипто-
ром сокета
WSAEOPNOTSUPP
Данный тип сокета нельзя использовать при вызове функ-
ций, ориентированных на работу с каналом связи
WSAEWOULDBLOCK
Сокет отмечен как неблокирующий и в настоящее время нет
каналов связи, которые нужно устанавливать
Второй (более удачный) способ ожидания соединения заключается в ис-
пользовании расширения программного интерфейса Windows Sockets, пред-
назначенного для выполнения асинхронных операций.
Вместо того, чтобы ожидать соединения, вызывая в цикле функцию
accept, приложение может единожды вызвать функцию WSAAsyncSelect,
указав ей, что при получении запроса на установку соединения оконная
функция приложения должна получить
сообщение
#define WSA_ACCEPT (WM_USER+1)
// При попытке установки соединения главное окно
// приложения получит сообщение WSA_ACCEPT
rc = WSAAsyncSelect(srv_socket, hWnd, WSA_ACCEPT,
FD_ACCEPT);
if (rc > 0)
{
- 50 - Через параметр sock передается сокета, находящегося в режиме приема для выполнения ожидания. Параметр addr должен содержать адрес буфера, в который будет записан адрес узла, подключившегося к серверу (размер этого буфера должен быть записан в целочисленной переменной, адрес которой передается через параметр addrlen). Список возможных кодов ошибки для функции accept приведен ниже Код ошибки Описание WSANOTINITIALISED Перед использованием функции необходимо вызвать функ- цию WSAStartup WSAENETDOWN Сбой в сети WSAEFAULT Значение параметра addrlen меньше размера структуры ад- реса WSAEINTR Выполнение функции было отменено при помощи функции WSACancelBlockingCall WSAEINPROGRESS Выполняется блокирующая функция интерфейса Windows Sockets WSAEINVAL Перед вызовом функции accept не была вызвана функция listen WSAEMFILE Нет доступных дескрипторов WSAENOBUFS Установлено слишком много соединений WSAENOTSOCK Указанный в параметре дескриптор не является дескрипто- ром сокета WSAEOPNOTSUPP Данный тип сокета нельзя использовать при вызове функ- ций, ориентированных на работу с каналом связи WSAEWOULDBLOCK Сокет отмечен как неблокирующий и в настоящее время нет каналов связи, которые нужно устанавливать Второй (более удачный) способ ожидания соединения заключается в ис- пользовании расширения программного интерфейса Windows Sockets, пред- назначенного для выполнения асинхронных операций. Вместо того, чтобы ожидать соединения, вызывая в цикле функцию accept, приложение может единожды вызвать функцию WSAAsyncSelect, указав ей, что при получении запроса на установку соединения оконная функция приложения должна получить сообщение #define WSA_ACCEPT (WM_USER+1) // При попытке установки соединения главное окно // приложения получит сообщение WSA_ACCEPT rc = WSAAsyncSelect(srv_socket, hWnd, WSA_ACCEPT, FD_ACCEPT); if (rc > 0) {
Страницы
- « первая
- ‹ предыдущая
- …
- 48
- 49
- 50
- 51
- 52
- …
- следующая ›
- последняя »