Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы Мартын 1(ComCorbaLab2004).doc
Скачиваний:
30
Добавлен:
10.02.2016
Размер:
1.81 Mб
Скачать

3.3. Индивидуальные задания на работу

3.3.1. Общее задание для всех студентов.Проверить наличие библиотекиWSOCK32.DLLи зарегистрировать приложение в библиотеке, определить описание реализации интерфейсаWindowsSocketи его текущее состояние.

3.3.2. Индивидуальное задание для каждого студента.Подготовить приложение к созданию четырех сокетов - двух датаграммных сокетов и двух сокетов виртуального канала, с максимальным размером датаграммного пакета, равным числу из последних трех цифр номера зачетной книжки студента. Формат адреса соответствует принятому вInternet.

3.3.3. Индивидуальное задание для каждого студента.Задать параметры сокетов, подготовив структуры типаsockaddr. Предусмотреть возможность работы: в широковещательном режиме для первого сокета; с определеннымиIP-адресами для второго и третьего сокетов, равными соответственно «192.168.ZZZ.1ХХ» и «192.168.ZZZ.1ХХ+1», гдеZZZ– номер подсети, указанный преподавателем, ХХ – последние две цифры номера зачетной книжки студента; с любым адресом для четвертого сокета.

3.3.4. Индивидуальное задание для каждого студента.В файлеHOSTSопределить четыре доменных имени для собственной рабочей станции и другой рабочей станции с номером, равным «№-1», где «№» - номер собственной рабочей станции (при «№-1», равном нулю, номер другой станции принимается равным «8»). В состав доменных имен ввести собственные инициалы. Имена связать с локальными датаграммным и виртуальным адресами «192.168.ZZZ.1ХХ» и «192.168.ZZZ.1ХХ+1», а также с удаленными датаграммным и виртуальным адресами «192.168.ZZZ.1ХХ+2» и «192.168.ZZZ.1ХХ+3». Выполнить с помощью функцииgethostbynameполучение указателей на структуры, характеризующие имена и адреса узлов.

3.3.5. Общее задание для всех студентов.Выполнить привязку всех подготовленных адресов и сокетов. Спровоцировать возврат функциейbindзначенияSOCKET_ERRORпо причине:

Код ошибки Описание

WSANOTINITIALISEDПеред использованием функции необходимо вызвать функциюWSAStanup

WSAENETDOWNСбой в сети

WSAEADDRINUSEУказанный адрес уже используется

WSAEFAULTЗначение параметраnamelenменьше размера структурыsockaddr

WSAEINPROGRESSВыполняется блокирующая функция интерфейсаWindowsSockets

WSAEAFNOSUPPORTЭтот протокол не может работать с указанным семейством адресов

WSAEINVALСокет уже привязан к адресу

WSAENOBUFSУстановлено слишком много соединений

WSAENOTSOCKУказанный в параметре дескриптор не является сокетом

3.3.6. Общее задание для всех студентов.Для освобождения ресурсов последовательно закрыть все сокеты и завершить работу приложения сWindowsSockets.

3.3.7. Общее задание для всех студентов.По результатам лабораторной работы подготовить полный протокол, включающий формулировку пунктов задания, краткое описание реализации каждого из пунктов задания с фрагментами кода, выводы по каждому из пунктов задания.

Лабораторная работа № 4. Использование atl

4.1 Создание dcom-сервера с использованием atl

4.1.1 Введение в atl

Библиотека активных шаблонов (ATL) предоставляет помощь при создании компактных и быстрых СОМ-серверов. ATL содержит коды поддержки при разработке традиционных СОМ-объектов, элементов управления ActiveX, серверов автоматизации, компонентов MTS, а также полноценных Windows-приложений. Кроме того, ATL имеет большое количество средств CASE, обеспечивающих не меньшую гибкость и удобство работы, чем те, к которым привыкли, в частности, пользователи MFC.

Аналогично MFC, проекты ATL начинаются с вызова средств CASE для получения минимального полного кода разрабатываемого проекта. Мастер ATL COM AppWizard используется для создания хранилища компонентов для СОМ-сервера, после чего обычно вызывается ATL Object Wizard, чтобы вставить произвольное количество коклассов в их новое жилище.

В отличие от MFC, ATL имеет более слабую поддержку разработки Windows-приложений. Это не значит, что нельзя использовать ATL для написания новой версии Microsoft Word или мощного графического приложения. Библиотека ATL содержит несколько шаблонов и вспомогательных классов, которые существенно облегчают создание приложений Win32. Многие из этих шаблонов не предназначены для явного использования в программе, а существуют только для того, чтобы предоставлять функциональные возможности базовых классов для других шаблонов. Основные оконные шаблоны определяются в файле <atlwin.h>.

Как нюанс следует отметить, что если явно не включить файл <atlwin.h> в проект ATL, то можно остаться без определений шаблонов.

Обычно для работы требуются только несколько оконных классов ATL. В частности, это CWindow, CWinTraits<>, CDialoglmpl<>, CSimpleDialog<> И CWindowImpl<>. Данного набора достаточно, чтобы создать автономное приложение, а также интерактивные блоки диалога.

Некоторые из оконных шаблонов имеют в названии буквы "Ах" (например, CAxHostwindow). Ax-классы предоставляют также дополнительную поддержку для сообщений элементов управления ActiveX и код для размещения элементов.

ATL также предоставляет класс CMessageMap. Данный класс содержит вспомогательную функцию, которая позволяет работающей на основе карты сообщений процедуре WndProc пользоваться главным окном. ATL имеет еще одну карту (msg_map), применяемую вместе с базовым классом CMessageMap. Однако таблица карты сообщений ATL чрезвычайно упрощена по сравнению со структурой библиотеки MFC_ MESSAGE_MAP.

Различные шаблоны, оканчивающиеся на "Т<>" (например, CWindowImplBaseT<>), предоставляют базовые функциональные возможности другим шаблонам ATL и в большинстве случаев о них можно забыть. Наконец, шаблон CWinTraits() позволяет разработчику хранить все оконные стили Windows в удобном шаблоне C++. Начать изучение оконных шаблонов с вершины иерархии следует с класса CWindow.

ATL не предоставляет такого набора мастеров, структур данных и вспомогательных классов, как это делают средства разработки Windows-приложений подобные MFC. Например, в ATL нет поддержки обмена данными с диалоговым окном (Dialog Data Exchange, DDE). Отсутствуют вспомогательные классы (такие как CPoint, CRect, CPen и т. д.), образующие графические примитивы Windows.

ATL – это компонентная среда, предназначенная для разработки надежных СОМ-серверов. Для этих целей, если используется C++, ATL является лучшим помощником. В частности, ATL поддержит в следующих аспектах разработки СОМ-сервера:

  • ATL поддерживает все коды хранилищ компонентов для DLL- и ЕХЕ-серверов.

  • ATL обеспечивает реализацию IUnknown, включая реализацию Querylnterfасе().

  • ATL предоставляет по умолчанию фабрику класса для каждого своего кокласса. Если требуется более сложный объект класса, ATL поможет его разработать.

  • ATL обеспечивает саморегистрацию сервера, избавляя от возни с REG-файлами.

  • ATL поддерживает многочисленные возможности СОМ, с которыми предстоит познакомиться: обширную информацию об ошибках, дуальные интерфейсы, точки соединения, а также поддерживает потоковые модели СОМ и составных объектов.