Разработка кроссплатформенного порта D-Series - Программирование, компьютеры и кибернетика дипломная работа

Разработка кроссплатформенного порта D-Series - Программирование, компьютеры и кибернетика дипломная работа




































Главная

Программирование, компьютеры и кибернетика
Разработка кроссплатформенного порта D-Series

D-Series как система автоматизации телевещательного процесса, используемая современными телестудиями. Портирование компонентов системы для работы на операционных системах Windows. Проверка корректного подключения плагинов и ручного режима воспроизведения.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru//
Размещено на http://www.allbest.ru//
В наше время телевидение стало неотъемлемой частью жизни любого человека. По статистике около 70% россиян смотрят телевизор каждый день, и 99% населения включают его хотя бы раз в месяц. По этой причине, разработки в области телевещания заняли особую нишу в IT-сфере и являются одними из основных бизнес-процессов ряда компаний.
Недавняя научно-техническая революция дала толчок к развитию сферы телевизионного вещания. Одним из главных направлений данной революции являлся процесс автоматизации производства, и как следствие этого, был разработан ряд систем управления и контроля процесса телевещания. Ранние системы, в большей мере, были направленны на автоматизацию контроля, а действия по организации и управлению производились операторами вручную; однако современные системы более многофункциональные и полностью автоматизируют процесс вещания, за исключением процесса создания расписания медиа контента для воспроизведения, выполняемого вручную.
Субъектом данной научной работы является процесс телевещания, а объектом - многофункциональная система автоматизации эфира, направленная на поддержание полного цикла вещания, начиная с управления оборудованием и заканчивая мониторингом и контролем над воспроизведением. В рамках данной дипломной работы будет рассмотрена одна из существующих систем, активно используемая рядом российских и иностранных телеканалов. Рассматриваемая система имеет ряд преимуществ, таких как высокая отказоустойчивость, модульность, обеспечивающая лёгкое расширение системы для поддержки нескольких сотен каналов, мощный интерфейс, обеспечивающий максимальную эффективность работы приложения и сравнительно простую реконфигурацию устройств вещания.
Однако система функционирует только на компьютерах под управлением Unix-подобной системы внутренней разработки. Таким образом, задача добавления кроссплатформенности данной системе, для её работы на операционных системах семейства Unixи Windows, является актуальной в рамках проекта D-Series компании “Теком”. Задача кроссплатформенности выбрана как основа для написания данной выпускной работы.
D-Series - система автоматизации телевещательного процесса используемая рядом современных телестудий. Главной целью данной разработки является обеспечение своевременного выхода видеоматериала в эфир в порядке, соответствующем расписанию и контроль за процессом трансляции. Необходимость в добавлении системе кроссплатформенности возникла в связи с тем, что изначально компоненты системы разрабатывались для функционирования на операционной системе Linux. Однако операционные системы семейства Windows занимают лидирующие позиции на IT-рынке.
В рамках данного проекта необходимо произвести портирование компонентов системы для работы на операционных системах Windows.
Целью дипломной работы является разработка кроссплатформенного порта D-Series и проведение тестирования на реальных устройствах.
Разработка кроссплатформенных компонент;
Тестирование разработанного продукта.
Кроссплатформенная разработка. Портирование
В программировании под термином «кроссплатформенное программное обеспечение» принимают продукт, работающий более чем на одной аппаратной платформе (архитектуре системы) или операционной системе. В рамках данного проекта конечный продукт должен функционировать на Windows и Unix операционных системах. Так как в основе работы лежит уже написанное программное обеспечение, работающее на Unix-системах, то добавление кроссплатформенного аспекта будет производиться за счёт процесса портирования. Портирование или портинг - это адаптация всей или части программы, с целью получения продукта, который будет функционировать в среде, отличной от той, для которой производилась разработка изначально. У любой разработки можно обозначить такое свойство как портируемость. Портируемость определяет насколько легко данный программный продукт может быть подвергнут процессу портинга.
По мере развития языков и техник программирования, а также самих операционных систем кроссплатформенное программирование становится более приоритетным на фоне других типов разработки, так как оно имеет ряд преимуществ:
Кроссплатформенность расширяет рынок конечных пользователей.
Возможность использования продукта на нескольких платформах значительно повышает процент продаж. Большинство покупателей имеют свои предпочтения в использовании конкретных операционных систем и компьютерного оборудования, таким образом, возможность поддержки как можно большего числа систем, даёт значительное преимущество на фоне конкурирующего программного обеспечения. К примеру, компании, которые используют несколько операционных систем для своей работы (Windows/Linux, Linux/MACOSи т.д.), отдадут явное предпочтение продукту, который одновременно функционирует на используемых компанией системах и требует одноразовых затрат.
Продукт становится более устойчивым.
С технической стороны код программы становится сложнее. Однако это приводит к появлению более надёжного и устойчивого продукта, так как разработчикам приходится прилагать гораздо больше усилий и быть более внимательными во время разработки. Портирование «старого» кода так же выявляет ряд ошибок, которые исправляются в режиме «реального времени», что положительно сказывается на релизном продукте.
Портинг может являться толчком к развитию продукта.
В большинстве случаев портинг является скорее необходимостью. IT-сфера развивается с быстрой скоростью: появление новых технологий, новых языков программирования, новых устройств и т.д. Для того чтобы система оставалась востребованной и конкурентоспособной, портинг используется как отправная точка для усовершенствования, которая расширяет возможности использования продукта и делает его более современным.
Портирование программного продукта между операционными системами включает в себя комбинации взаимодействия между рядом элементов системы, таких как:
Инструменты для сборки (компилятор, линковщик);
Каждый из этих компонентов оказывает значительное влияние на кроссплатформенную разработку, так как в большинстве случаев они имеют значительные различия на разных системах.
Операционные системы Windows и Linux. Особенности разработки
Операционная система представляет собой комплекс системных программ, загружающихся при включении компьютера, главной целью которых является организация взаимодействия между пользователем, прикладными программами и устройствами компьютера.
В настоящее время на рынке операционных систем лидирующие позиции занимают операционные системы семейства Windows, за ними следуют Unix-системы, и на третьем месте MACOSX. Все эти операционные системы занимаются управлением наиболее важными процессами для всей системы, такими как: управление памятью и файловыми системами, именование и расположение ресурсов, обеспечение многозадачности, взаимодействие и синхронизация между потоками и задачами, а также предоставление гибких механизмов защиты ресурсов от несанкционированного доступа.
Данная дипломная работа предполагает разработку проекта, функционирующего на операционных системах Windows 7 и Linux внутренней сборки, поэтому именно эти две системы будут рассмотрены в данном и последующих пунктах работы.
Windows7 - операционная система семейства WindowsNT. Windows системы, в частности Windows 7, ориентированы на управление посредством графического интерфейса. Как следствие, основным преимуществом системы является пользовательский, интуитивно понятный интерфейс и многозадачность - одновременная работа нескольких приложений, что делает её максимально привлекательной для обычных пользователей. К недостаткам можно отнести проблемы с безопасностью и обязательное использование средств программного интерфейса WindowsAPI для разработчиков.
Linux - это многозадачная, многопользовательская операционная система, принадлежащая семейству UNIX. Рассматриваемая система поддерживает x86 архитектуру и позволяет собирать бинарные пакеты i386 и i686. Linuxпозиционируется как стабильная и мощная операционная система с модульным ядром. Слабой стороной системы является сложность в установке и настройке. Однако открытый код даёт возможность подстраивать систему под конкретные нужды разработчиков, а систематизация файлов делает систему понятной для продвинутых пользователей. Именно по этим причинам Unix-системы стабильно набирают популярность как среди разработчиков, так и среди обычных пользователей.
Несмотря на общие функции, которые выполняют обе системы, между ними существуют различия, которые необходимо принимать во внимание при разработке программного обеспечения.
При реализации кроссплатформенности или процессе портинга выделяют несколько функциональных особенностей операционных систем, которые требуют повышенного внимания:
Определение потока и определение процесса являются различными для рассматриваемых операционных систем. Для операционной системы Windows процесс можно определить как контейнер для потоков. Количество потоков в контейнере начинается с одного, если же потоков больше - процесс называют многопоточным. В Linux же каждый поток является процессом. Новый поток создаётся при помощи создания нового процесса, который будет являться дочерним по отношению к главному, что создаёт многопроцессность. Реализация многопоточности в Linuxпроисходит при помощи механизма легких процессов.
К примеру, серверное приложение должно порождать поток для каждого пользователя, который хочет совершить подключение. На Unix-подобных системах будет достаточно системного вызова fork(), который создаст процесс-потомок являющийся копией родителя, за исключением уникального идентификатора процесса (PID). Windows же не имеет аналога fork(), и пользователь должен вручную создавать процесс используя специальную функцию WinAPICreateProcess() с указанием ряда параметров.
Как видно из примера, реализация и контроль над процессами и потоками в операционных системах различны и являются одной из основных проблемных областей при создании кроссплатформенного приложения или портировании старого кода.
Файловые системы рассматриваемых операционных систем коренным образом отличаются. В основе файловой системы ОС Linux лежит дерево файлов, от корня которого монтируются все диски. Корневой каталог обозначается символом «/» и как следствие, пути к любым файлам прописываются от корня дерева. Файловая система Windows иерархическая и основывается на разделении памяти на диски, таким образом, при указании абсолютного пути до файлов необходимо использовать путь от диска. Важным различием так же является чувствительность к регистру, которая присуща Unix-системам и не имеет влияния в семействе Windows.
Пример указания пути в Linuxи Windows:
Кроме трудностей, возникающих из-за различий операционных систем, необходимо также не забывать о таких аспектах как: память - с увеличением размера программ все сложнее отслеживать утечки памяти, работа с переменными окружения, именование переменных и другие.
Средства для кроссплатформенной разработки на языке С++
В настоящее время существует обширное количество инструментов, ряд библиотек и языков программирования (Java, Python и т.д.), которые помогают разработчикам создавать кроссплатформенные приложения. Кроссплатформенность бывает нескольких типов: кроссплатформенность операционных систем, браузерная кроссплатформенность, кроссплатформенность версий ОС и т.д. В рамках данного проекта реализуется кроссплатформенность операционных систем, а используемый язык программирования - C++. Данный пункт работы будет рассматривать ориентированные на данные факты средства для кроссплатформенной разработки.
Boost - собрание библиотек, расширяющих C++. Boost имеет направленость на исследования и расширяемость.
Библиотеки Boost охватывают следующее:
Обход ошибок в компиляторах не соответствующих стандарту
Математические и числовые алгоритмы
Синтаксический и лексический разбор
Метапрограммирование на основе препроцессора
Метапрограммирование на основе шаблонов
POCO (или C++ PortableComponents) - это коллекция библиотек классов с открытым исходным кодом которая упрощает и ускоряет разработку сетевых мультиплатформенных приложений на C++. Модульная структура и эффективная реализация делает POCO идеальным кандидатом для использования при разработке для embedded устройств (прошивки и прочее), область, в которой C++ становится все более и более популярным, так как подходит как для низкоуровневой (устройства ввода/вывода, обработчики прерываний и прочее) так и для высокоуровневой объектно-ориентированной разработки.
threads, thread synchronization and advanced abstractions for multithreaded programming
powerful logging and error reporting
network programming (TCP/IP sockets, HTTP, FTP, SMTP, etc.)
XML parsing (SAX2 and DOM) and generation
configuration file and options handling
Компилятор - это программа или техническое для выполнения процесса компиляции.
В свою очередь компиляция - это процесс трансляции кода исходного кода программы, написанной на высокоуровневом языке программирования, в эквивалентный низкоуровневый код. Входным параметром компиляции является описание алгоритма на проблемно-ориентированном языке, а выходным параметром - описание предоставленного компилятору алгоритма на машинно-ориентированном языке, называемым объектным кодом.
Процесс компиляции состоит из следующих этапов: лексический анализ предоставленного кода (исходный код преобразуется в последовательность лексем), затем синтаксический анализ (образование дерева разбора), далее семантический анализ (проверка и привязка типов и определений), оптимизация (удаление лишних конструкций и упрощение кода) и непосредственно генерация машинного кода.
В рамках дипломного проекта будут рассмотрены компилятор GCC и его наследник для операционной системы Windows - MinGW.
GNUCompilerCollector или GCC - это набор компиляторов распространяемый в рамках проекта GNU и поддерживающий несколько языков программирования (С, С++, Java, Fortran и др.) и различные типы процессоров, в том числе и микроконтроллеры и 64-разрядные процессоры. GCC позиционируется как бесплатный традиционный компилятор для операционной системы Linux.
Начало этому компилятору положил Ричард Столлман в 1985 году, а настоящее время GCC поддерживается и разрабатывается группой программистов со всего мира.
Внешний интерфейс компилятора - консольный. Запуск производится одноимённой командой gcc, которая интерпретирует переданные аргументы, затем для каждого входного файла запускает компилятор соответствующего языка, по необходимости запускает сборщик и компоновщик. Результат компиляции ассемблированный код.
GCC также предоставляет пользователям возможность отладки приложений при помощи GNUDebugger (gdb).
На выходе получим исполняемый файл main.
MinGW или MinimalistGNUforWindows - представляет собой комбинацию компилятора GCC и набора библиотек импорта и заголовочных файлов для WinAPI. В рамках дипломного проекта интересно отметить, что MinGW является портом компилятора GNU под операционную систему Windows. Однако, несмотря на этот факт, в первую очередь он предназначен для работы на Windows операционных системах, и не предназначен для обеспечения среды выполнения POSIX-приложений, то есть не может выполнить ряд функциональности (fork() и др.). Все утилиты управляются из командной строки, что немного непривычно для пользователей Windows.
Включает в себя: набор компиляторов, ассемблер, линковщик, архиватор, библиотеки и заголовочные файлы, а такжеMSYS - набор утилит командной строки Unix-подобных систем.
На выходе получим исполняемый файл main.exe
Рассматриваемая система обеспечивает полный рабочий цикл вещательных студий. Её основная задача - запуск воспроизведения и записи видеоклипов в эфир. Если рассматривать систему как чёрный ящик, то в качестве входа рассматривается документация с расписанием, предоставляемая «traffic department» отделом в телевещательных компаниях, а выходом - процесс передачи роликов в соответствующей расписанию последовательности. Сложность данной задачи заключается в том, что система должна поддерживать множество каналов и много различных видов оборудования, каждый из которых поставляется разными поставщиками и поддерживает разные стандарты. Существует несколько разновидностей системы, две из которых, в настоящее время, разрабатываются компанией Imagine Communications и отданы на аутсорсинг в Россию: ADC и D-Series. Если произвести сравнение, то D-Series позиционируется как более надёжная система для более крупных телевещательных студий с поддержкой до 1000 каналов.
Один из основных терминов в системе - Bus (Шина). Bus - это канал, по которому в нужное время события выходят в эфир. Основное отличие шины от вещательного канала в том, что она может использоваться не только для трансляции, но и для подготовки материала перед прансляцией. Существуют нескольких типов шин. Основным типом является Presentation bus - шина, непосредственно связанная с транслирующим оборудованием для выпуска материал. Preparation bus - шина, используемая для непосредственной подготовки расписания и отправления на Presentation bus. Кроме основных, система содержит дополнительные шины для реализации различного функционала (Record bus - шина для записи и т.д.)
Следующий основополагающий термин - расписание. Расписание - это набор событий, которые используются для того, чтобы быть уверенным, что видеоматериал будет выходить в эфир в нужное время и нужной последовательности. Одна шина может содержат одно или несколько расписаний. Несколько расписаний могут быть удобны в ситуации, когда есть необходимость быстро перейти от основной передачи к рекламе. Для этого создаем два отдельных расписания: для основного эфира и для рекламных роликов, и затем вручную совершаем переключения в нужный момент. Другим примером является запасное расписание, которое обеспечит бесперебойную работу канала при неполадках.
Последний третий термин - событие. Это запись о том, какой материал, в какое время должен уйти в эфир, его длительность и ещё набор параметров. Каждое событие конфигурируется отдельно.
В рассматриваемой системе можно выделить три ключевых компонента:
сервер автоматизации на базе операционной системы реального времени Linux, осуществляющий непосредственное управление оборудованием видео студии. К оборудованию телестудии можно отнести устройства: видео серверы, видео роутеры и системы брендинга, обеспечивающие наложение многослойных анимационных элементов (логотипы, бегущие сроки) и переключение между видео роликами в процессе воспроизведения расписания;
сервер управления мультимедиа контентом, который собирает и регистрирует в единой базе данных информацию о содержании накопителей видео серверов;
рабочее место оператора -многофункциональное клиентское приложение, являющееся интерфейсом оператора по мониторингу и контролю за воспроизведением, и предоставляющее средства оперативного воздействия на процесс воспроизведения расписания (переключения на экстренный выпуск новостей, внесение необходимых корректировок в расписание).
Архитектура системы представлена на Рисунке 1.
Рисунок 1. Архитектура системы D-Series
Ядром системы является спаренный сервер - девайс контроллер (devicecontroller), который представляет из себя два идентичных сервера, полностью дублирующих друг друга с целью обеспечения надёжности системы. В случае если какое-нибудь оборудование или программа выходит из строя на одном из серверов, то автоматически переходит переключение на другой сервер без пауз в эфире. На Рисунке 1 так же явно видно, что все связи между устройствами представлены в виде дублирующих сетей, соответственно, если одна из сетей выходит из стоя, будет функционировать другая.Система разработана так, что при выходе из стоя одного из компонентов, мгновенно произойдёт переключение.Именно поэтому система позиционируется как система с повышенной надёжностью.
Если рассматривать компоненты отдельно,то:
Девайс контроллер - это два сервера, на которых запущен специальный дистрибутив операционной системы LinuxDALinux. Активный сервер хранит в себе текущее расписание, управляет его воспроизведением на вещательном оборудовании и производит логирование в режиме реального времени;
Вещательное оборудование или видеодиски (BroadcastingEquipment) - представляет собой компьютер под управление Windows или Linux операционной системы, к которому по оптическому интерфейсу подключен D-AIS. Вещательное оборудование производит запись клипов на цифровой носитель, и при получении управляющих команд от девайс контроллера (загрузить клип, подготовить клип к проигрыванию, начать проигрывание, закончить проигрывание), воспроизводит их;
D-AIS-информационный или контент сервер с массивным количеством дисков, хранящими базу данных с контентом, с которых в дальнейшем происходит проигрывание;
Communication hardware - оборудование, обеспечивающее общение девайс контроллеров и вещательного оборудования. Осуществляет автоматическое переключение между видеодисками. Как правило использует последовательный канал передач RS-422, который является промышленным стандартом для последовательной передачи данных. Однако в последнее время предпринимаются попытки перейти на протокол TCP/IP;
DALstations- рабочие места операторов, представляющие собой персональные компьютеры, работающие на WindowsОС. Управление эфиром происходит посредством запуска приложения с одноимённым названием DALStation;
Системный менеджер (Systemmanager) - персональный компьютер, который обеспечивает безопасность системы, отслеживает сбои и ошибки, контролирует трафик и производит сканирование системы на вирусы;
Panels- представляют собой устройства для ручного усправления эфиром.
Данная архитектура может подвергаться модификациям. К примеру, добавление дополнительных серверов-помощников для девайс контроллера, которые возьмут на себя автоматизацию воспроизведения расписания.
Все компоненты соединяются Ethernet-сетями: AutomationLAN (неуправляемая из вне сеть; пример применения см. выше), InformationLAN (сети для прохода трафика, являются бэк-апами WorkstationLAN), WorkstationLAN («сеть реального времени» используется для общения «операторов» с девайс контроллером) (на Рисунке 1 InformationLAN = WorkstationLAN) иMediaLAN (сеть для общения вещательного оборудования с контент сервером).
Представленные сети организуются посредством использования TCPи UDP протоколов из стека протоколов TCP/IP.
TCP - протокол передачи данных, ориентированный на наличие соединения с получателем для получения ответов на запросы, и при его наличии передача данных происходит двунаправленно.
UDP - протокол передачи данных не требующий подтверждения получения пакетов. Передача данных происходит в однонаправленном порядке, с добавлением к заголовку пакета полей «порт отправителя» и «порт получателя».
Обзор системы D-Series даёт общее представление о предназначении системы, её работе и взаимодействии её компонентов.
2.1 Разработка и анализ технического задания
Целью разработки является добавление кроссплатформенного аспекта системе автоматизации телевещанияD-Series.
Поддержка ряда телевещательного оборудования;
Создание расписаний для воспроизведения;
Подача материала в эфир в соответствующее время;
Наложение эффектов на медиа-контент - логотипы, звук и т.д.;
Обеспечение ручного управления эфиром через специальные панели.
Разработка данного проекта требует наличие ПК с установленными операционными системами: Windows 7 и DALinux.
Требования к аппаратному и программному обеспечению
Для реализации проекта необходимо наличие 2-х аппаратных устройств: видеосервер NexioDCALи свитчер DCALLRC.
NexioDCAL представляет собой платформу для эффертивного управления медиа контентом. Обеспечивает запуск материала в эфир и наложение видеоэффектов. Имеет небольшое внутреннее хранилище, поэтому хранит в себе часть контента, что обеспечивает бесперебойный показ материала при возникновении сбоев. Более того, устроство поддерживает процесс записи материала на видеосервера. Режимы воспроизведения и записи настраиваются оператором вручную.
Для разработки программного продукта под WindowsОС была выбрана интегрированная среда разработки Microsoft Visual Studio 2015 Community. Данная среда позволяет разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех большого платформ.
Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние до-полнения (плагины) и бибилиотеки для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как например, Subversion и Visual SourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектов процесса разработки программного обеспечения.
В структуре рассматриваемой системы можно выделить 3 основных компонента, взаимодействующие между собой, представленных на Рисунке 3.
D-MAS - серверная часть системы, которая организует и управляет процессом подачи материала в эфир в соответствии расписанию, а также выполняет контроль над телевизионным оборудованием, подключенном к системе в момент работы;
Libdseries - статическая прослойка библиотек осуществляющая взаимодействие сервера и плагинов транслирующих устройств;
Dseries-drivers - плагины устройств, обеспечивающие передачу сигналов на устройства и обработку полученных ответов. Каждый плагин представляет собой динамическую библиотеку.
Портинг будет производиться на языке программирования C++ с использованием кроссплатформенной библиотеки BOOST, стандартов языка С++11 и С++14 и использованием условной компиляции посредством директив препроцессора #ifdefс макросом __linux__, #elseи #endif.
Проект состоит в портинге 2 компонентов системы: libdseriesи ряд драйверов устройств -NexioDCALи DCALLRC.
В рамках операционной системы Linuxlibdseries представляет собой статическую библиотеку с расширением .a, а плагины - динамические библиотеки с расширением .so.
Для операционной системы Windows статические библиотеки имеют расширение .lib, а динамические .dll.
Статическая библиотека - библиотека, которая линкуется с программой в момент компиляции. Объектный код помещается внутрь исполняемого файла, поэтому, когда возникает необходимость использования библиотеки, пользователь использует исключительно результат компиляции.
Динамическая библиотека - библиотека, которая подключается к программе в момент её выполнения. Позволяет экономить как операционную память, так и память на жёстком диске, а также время разработчиков, так как перекомпиляция занимает гораздо меньше времени, а делать её нужно чаще.
Такие различия привели к созданию отдельных проектов в среде разработки VisualStudio 2015, после сборки которых были получены файлы с соответствующими расширениями для ОС Windows.
Портинг в данном проекте можно разделить на 4 логических части: портинг NET-части, портинг многопоточности, портинг обработки ошибок и тайм-портинг.
NET-часть или Сетевая часть - фрагменты программы, обеспечивающие взаимодействие устройств через протоколы TCPи UDP. Стандарты C++11 и C++14 на настоящий момент не поддерживают реализацию асинхронного сетевого программирования, поэтому для портинга сетевых фрагментов использовалась библиотека Boost.Asio.
Boost.Asio - кроссплатформенная С++ библиотека для программирования сетей.
boost::asio: - пространство имён основных классов и функций. К главным классам Boost.Asio относят классыio_service и streambuf;
boost::asio::ip: отвечает за сетевую часть библиотеки. Основные классы: tcp, udp, address, endpoint;
boost::asio::error: содержит коды ошибок, которые возможно получить при вызове подпрограммы ввода/вывода;
boost::asio::local: и boost::asio::windows: - пространства имен содержащиеPOSIX и Windowsспецифичные классы соответственно.
В рамках проекта Boost.Asio помогает реализовать работу с ip-адресами, конечными точками и сокетами (ip::tcpи ip::udp).
Конечная точка или endpoint - это адрес подключения вместе с портом.
class IPV4_TCP_HOST : public IPV4_HOST {
IPV4_TCP_HOST(const IPV4_ADDRESS & address, TCP_PORT port); …
asio::ip::tcp::socket asio_socket; …}
class IPV4_UDP_HOST : public IPV4_HOST {
IPV4_UDP_HOST(const IPV4_ADDRESS & ipv4_address, UDP_PORT port); …
asio::ip::udp::socket asio_socket; …};
IPV4_TCP_HOST::IPV4_TCP_HOST(const IPV4_ADDRESS & address, TCP_PORT port)
,endpoint(asio::ip::address_v4::from_string(address.c_str()), port)
int IPV4_TCP_HOST::get_socket_descriptor()
return asio_socket.native_handle();
Для реализации других аспектов портинга использовались стандарты языка С++11 и С++14.
typedef std::unique_lock LOCKER;
typedef std::timed_mutex TIMED_MUTEX;
typedef std::unique_lock TIMED_LOCKER;
BASIC_TRANSPORT::COMPONENT&BASIC_TRANSPORT::component_reference_by_type(unsigned int instance, COMPONENT::TYPE type)
if (type == CHANNEL_COMPONENT::component_type()) {
if (unlikely(!data__->channel_is_valid(instance)))
throw std::out_of_range("Invalid transport component interface");
CHANNEL_COMPONENT * const result = data__->channels[instance].interface;
throw std::logic_error("Internal Error: derived class did not provide transport components!");
} else if (type == CLIPMANAGER_COMPONENT::component_type()) {
if (unlikely(!data__->clipmanagement_is_supported()) || instance > 0)
throw std::out_of_range("Invalid clip management component interface");
throw std::invalid_argument("Unknown devic
Разработка кроссплатформенного порта D-Series дипломная работа. Программирование, компьютеры и кибернетика.
Дистанционное Обучение Курсовая Работа
Скачать Бесплатно Сочинение Егэ
Реферат: Программирование элементов разветвляющейся структуры
Реферат по теме Эволюция патогенных энтеробактерий
Курсовая работа по теме Исследование особенностей проявления детского творчества в игре
Реферат по теме Оптимизация сайта: ошибки
Контрольная Работа По Ге 8 Класс Атанасян
Экология Моего Дома Сочинение
Проблемы Современной Семьи Реферат
Реферат: Влив макроекономічних показників на валютний курс
Вспомогательный Инструмент Для Токарных Станков Реферат
Дипломная работа: Ипотечное кредитования и перспективы развития
Реферат: 40 Acres And A Mule Essay Research
Дипломная работа по теме Основные направления борьбы с контрабандой наркотических средств и психотропных веществ
Вводная Контрольная Работа По Алгебре 7 Класс
Практическая Работа По Физике 7 Класс
Шендерей Павел Эдуардович Автореферат Диссертации
Реферат На Тему Німеччина Та Італія У Другій Половині Хх Ст.
Рим Реферат
Туберкулез Лор Органов Реферат
Разработка Linux-приложений - Программирование, компьютеры и кибернетика контрольная работа
Уголовно-правовая характеристика грабежа - Государство и право дипломная работа
Анализ результатов присоединения России к ВТО - Международные отношения и мировая экономика дипломная работа


Report Page