Связывает соединитель с заданным дескриптором интерфейса-партнера.
SIO_ENABLE_CIRCULAR_QUEUEING
не использ.
не использ.
Разрешает организацию кольцевой очереди.
SIO_FIND_ROUTE
struct sockaddr
не использ.
Запрос маршрута до заданного адреса.
SIO_FLUSH
не использ.
не использ.
Аннулирует текущее содержимое очереди на отправку.
SIO_GET_BROADCAST_ADDRESS
не использ.
struct sockaddr
Определяет протокольно-зависимый широковещательный адрес для использования в sendto/WSASendTo
SIO_GET_QOS
не использ.
QOS
Определяет текущую спецификацию соединителя.
SIO_GET_GROUP_QOS
не использ.
QOS
Определяет спецификацию группы, к которой принадлежит соединитель
SIO_MULTIPOINT_LOOKBACK
BOOL
не использ.
Определяет, будут ли данные, посланные в ходе многоточечной сессии, получены соединителем локальной ЭВМ.
SIO_MULTICAST_SCOPE
int
не использ.
Определяет режим, в котором будут осуществляться мультикастинг-обмены.
SIO_SET_QOS
QOS
не использ.
Устанавливает новую спецификацию для соединителя.
SIO_SET_GROUP_QOS
QOS
не использ.
Устанавливает новую спецификацию группы, к которой принадлежит соединитель.
SIO_TRANSLATE_HANDLE
int
зависит от API
Возвращает дескриптор для соединителя s, который соответствует контексту интерфейса-партнера.
Оператор WSAAccept устанавливает условное соединение и имеет следующую структуру параметров.
WSAAccept (
IN
SOCKET
s,
OUT
struct sockaddr FAR
addr,
IN OUT
LPINT
addrlen,
IN
LPCONDITIONPROC
lpfnCondition,
IN
DWORD
dwCallbackData
);
s
дескриптор соединителя, который находится в режиме listen.
addr
опционный указатель на буфер (структуру), где должен храниться адрес подключаемого объекта, формат адреса определяется типом протокола, заданным при создании соединителя.
addrlen
Опционный указатель на целую переменную, которая определяет длину аргумента addr.
lpfnCondition
Адрес опционной условной процедуры, которая на основе полученной информации, создает группу или подключает соединитель к уже существующей группе.
dwCallbackData
Параметр, возвращаемый приложению. Этот параметр не интерпретируется WinSock.
<
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.
Переменные lpCallerId и lpCallerData являются параметрами, которые содержат адрес партнера и любую пользовательскую информацию, которая была прислана вместе с запросом на соединение.
lpSQOS представляет собой указатель на текущую спецификацию QOS соединителя s (по одной для каждого из концов виртуального канала), за которой следуют дополнительные параметры, заданные провайдером. Нулевое значение lpSQOS указывает на то, что вызывающая сторона не задала значения QOS.
lpGQOS - указатель на спецификацию QOS группы соединителей, созданной запрашивающей стороной (для каждого из направлений обмена), за которой следуют дополнительные параметры, заданные провайдером.
lpCalleeId представляет собой локальный адрес вызывающей стороны.
lpCalleeData используется программой проверки условий для записи результатов ее работы.
lpCalleeData первоначально содержит размер буфера, предназначенного для сервис провайдера. Положение буфера определяется указателем lpCalleeData->buf. Программа проверки условий должна скопировать lpCalleeData->len байт в lpCalleeData->buf, а затем провести актуализацию lpCalleeData->len, с тем чтобы сообщить действительное число переданных байтов.
В таблице 7.10 представлен перечень кодов-сообщений об ошибках вместе с их эквивалентами для Berkley-соединителей.