указывают на то, является ли
/p>
IN
и
OUT указывают на то, является ли данный параметр входным или выходные.
Программа извлекает очередную заявку на соединение из очереди соединителя
s и проверяет с помощью специфицированной программы выполнение условий соединения. Если условия выполнены, возвращается флаг CF_ACCEPT, программа создает новый соединитель и осуществляет подключение его к группе в соответствии с параметром
g, выработанным программой проверки условий. Вновь созданный соединитель имеет те же параметры, что и s, включая те, что задаются операторами контроля
WSAAsyncSelect или
WSAEventSelect. Если программа проверки условия вернула флаг CF_REJECT, запрос на соединение аннулируется. При невозможности принять решение немедленно, программа проверки условия должна вернуть флаг CF_DEFER, при этом никаких действий не предпринимается. Когда приложение будет готово обслужить запрос на соединение, оно снова запустит процедуру
WSAAccept и пришлет либо CF_ACCEPT, либо CF_REJECT в качестве результата проверки условий.
Для соединителей, которые остаются в блокирующем режиме, когда в очереди нет запросов на соединение,
WSAAccept блокирует вызывающую программу до появления заявки на соединение. Для соединителей неблокирующего типа, когда очередь пуста, оператор
WSAAccept вернет флаг ошибки.
При завершении процедуры в addrlen будет записана реальная длина адреса в байтах. Если addr и (или) addrlen равны нулю, это означает, что нет никакой информации об адресе удаленного адресата. В противном случае эти параметры несут в себе реальную информацию не зависимо от результатов проверки условий. Прототип программы проверки условий имеет формат:
int CALLBACK
ConditionFunc(
IN
|
LPWSABUF
|
lpCallerId
, |
IN
|
LPWSABUF
|
lpCallerData
, |
IN OUT
|
LPQOS
|
lpSQOS
, |
IN OUT
|
LPQOS
|
lpGQOS,
|
IN
|
LPWSABUF
|
lpCalleeId
, |
OUT
|
LPWSABUF
|
lpCalleeData
, |
OUT
|
GROUP FAR *
|
g
|
IN
|
DWORD
|
dwCallbackData
|
);
ConditionFunc
представляет собой указатель имени программы, которая служит для проверки условий. В 16-битной версии Windows, эта программа выполняется в рамках той же сессии, что и
WSAAccept, поэтому вызов каких-либо иных WinSock операторов кроме
WSAIsBlocking и
WSACancelBlockingCall не возможен. Программа проверки условий должна находиться в DLL или прикладном модуле. Для определения адреса программы проверки условий следует пользоваться оператором
MakeProcInstance.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий