Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Графика -> Гончаров Д. -> "DirectX 7.0 Для программистов" -> 160

DirectX 7.0 Для программистов - Гончаров Д.

Гончаров Д., Салихо Т. DirectX 7.0 Для программистов — Спб.: Питер, 2001. — 528 c.
ISBN 5-318-00173-4
Скачать (прямая ссылка): dirext7dlyaprogrammistov2001.djvu
Предыдущая << 1 .. 154 155 156 157 158 159 < 160 > 161 162 163 164 165 166 .. 229 >> Следующая

При использовании функции DirectPlayEnumerateO инициализация системного провайдера происходит при создании интерфейса IDi rectPl ay с помощью функции DirectPlayCreate, в параметрах которой указывается используемый провайдер.
Функция EnumConnectionsO принадлежит интерфейсу IDi rectPl ay и поэтому не может быть вызвана до его создания. Чтобы использовать эту функцию, при создании интерфейса IDi rectPl ay необходимо вместо указателя на идентификатор
Управление сеансом
369
провайдера передать NULL, а затем при помощи функции InitializeConnectionO, прототип которой приведен ниже, указать, какой провайдер используется.
HRESULT InitializeConnection(
LPVOID lpConnection,
DWORD dwFlags
);
Первым параметром передается указатель на буфер, содержащий информацию о соединении. Вторым параметром следуют флаги, которые в данный момент не используются и предназначены для будущих версий.
Управление сеансом
Сеансом в DirectPlay называют канал связи между двумя или более приложениями. Вполне возможно, что на одном компьютере несколько приложений откроют несколько сеансов.
Открыть сеанс можно разными способами. Например, приложение может выполнить перечисление всех существующих сеансов и присоедиться к одному их них. Другая возможность заключается в создании собственного сеанса.
После того как приложение стало частью сеанса, появляется возможность создавать игроков и обмениваться сообщениями.
Каждый сеанс имеет сервер. Сервер является владельцем сеанса, и только он может изменять настройки сеанса.
DirectPlay предоставляет набор функций для управлением сеансом. Рассмотрим их подробнее.
Перечисление сеансов
Функция IDirectPlay4::EnumSessiоп() перечисляет все существующие сеансы. Ниже представлен ее прототип.
HRESULT EnumSessions(
LPDPSESSI0NDESC2 lpsd,
DWORD dwTimeout,
LPDPENUMSESSI0NSCALLBACK2 1pEnumSessionsCal1back2.
LPVOID lpContext,
DWORD dwFlags
):
Первый параметр функции — указатель на структуру DPSESSI0NDESC2, в которой описываются параметры перечисляемых сеансов. При перечислении будут найдены только сеансы, соответствующие описанию, представленному в этой структуре. Поле guidApplication этой структуры указывает на приложение, с которым требуется установить сеанс. Если необходимость в определенном приложении отсутствует, указывается GUID NULL. Если пользователь желает присоединиться к сеансу с определенным паролем, то этот пароль необходимо указать в поле IpszPassword. Все остальные поля структуры при перечислении сеансов игнорируются.
Следующий параметр — время ожидания ответа. При синхронном соединении этот параметр, задаваемый в миллисекундах, задает время ожидания ответа о су-
370
Урок 12 • Сетевые подключения
ществовании сеанса. При перечислении сеансов приложение блокируется на указанный в этом параметре промежуток времени, по истечении которого все ответы будут игнорироваться. При асинхронном соединении этот параметр определяет частоту рассылки широковещательных сообщений с запросом о существовании сеанса. Если этот параметр равен 0, время ожидания будет установлено в соответствии с параметрами используемого провайдера.
Третий параметр — указатель на функцию обратного вызова, которая будет вызываться каждый раз при обнаружении сеанса.
Четвертый параметр — указатель на структуру, через которую могут быть переданы данные функции обратного вызова. Обычно такие данные отсутствуют, и этот параметр устанавливается в NULL.
Последний параметр функции — флаги. По умолчанию он равен 0, что является равнозначным флагу DPENUMSESSIONSAVAILABLE. Все возможные для этой функции флаги описаны в табл. 12.3.
Таблица 12.3. Флаги метода EnumSessionQ
Флаг Описание
DPENUMSESS I0NSALL Перечисление всех сеансов вне зависимости от того, принимают они новые соединения или нет. В таких сеансах может быть установлен лимит пользователей, запрет на создание новых пользователей или запрет на присоединение
DPENUMSESS I0NSASYNC Перечисление всех текущих сеансов, находящихся в кэше. Запускает асинхронное перечисление, если оно еще не запущено. Обновляет список сеансов до тех пор, пока не будет выполнен повторный вызов функции с параметром DPENUMSESSI0NS ST0PASYNC или пока не произойдет вызов одной их двух функций — ОрепО либо ReleaseO. Если данный флаг не установлен, произойдет синхронное перечисление
DPENUMSESSI0NS_AVAILABLE Перечисляет все сеансы, готовые к принятию новых игроков. Сеансы, в которых лимит пользователей исчерпан, а также те, которые не позволяют создавать новых игроков по какой-то другой причине, перечислены не будут. Не перечисляются сеансы с паролями, если не указан флаг DPENUMSESS IONS PASSWORDREQUIRED
DPENUMSE SSIONSPASSWORDREQUIRED При совместном использовании с флагами DPENUMSESSI0NS_ AVAILABLE или DPENUMSESSI0NS_ALL разрешает перечисление сеансов с установленным паролем. При этом пароль указывается в поле IpszPassword структуры DPSESSI0NDESC2. Если данный флаг не используется, сеансы с установленным паролем не перечисляются
DPENUMSESSI0NS_RETURNSTATUS Использование этого флага означает, что при перечислении не будет выводиться диалоговое окно с параметрами соединения. Если соединение не может быть установлено немедленно, функция возвратит ошибку DPERR CONNECTING. При этом приложение должно повторять вызов функции до тех пор, пока не будет получен код возврата DP 0K
Предыдущая << 1 .. 154 155 156 157 158 159 < 160 > 161 162 163 164 165 166 .. 229 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.