48298 (666037), страница 2

Файл №666037 48298 (Програмна реалізація системи IP-телебачення на базі архітектури "клієнт-сервер") 2 страница48298 (666037) страница 22016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

Викликом методу Run об'єкту Application починається власне робота пркладної програми. Цей метод запускає цикл обробки повідомлення, на якому побудована робота програми, що завершується під час надходження повідомлення про закриття.

Структура модуля

Модулі – це програмні одиниці, призначені для розміщень фрагментів програм. За допомогою програмного коду, що міститься в них, реалізується вся поведінкова сторона програми. Будь-який модуль має наступну структуру: заголовок, секція інтерфейсних оголошень, секція реалізації, термінатор. Заголовок відкривається зарезервованим словом unit за яким слідує ім'я модуля і крапка з комою. Секція інтерфейсних оголошень відкривається зарезервованим словом Interface, а секція реалізації – словом implementation. Розділення модуля на дві секції забезпечує зручний механізм обміну алгоритмами між окремими частинами однієї програми. Термінатором модуля, як і термінатором програми, є end з крапкою. Вихідний текст програмних модулів приведений в лістингах Б.2 та Б.3 додатку Б.

У інтерфейсному розділі (interface) приводиться інформація про вміст програмного модуля, доступний для інших модулів і програм. Такою інформацією оголошені функції і процедури, визначені змінні, константи і типи.

Розділ реалізації (implementation) містить власне програмний код модуля. Всі оператори, поміщені в розділ реалізації, доступні тільки усередині даного програмного модуля. Для того, щоб дістати доступ до тих або інших елементів ззовні модуля, необхідно помістити відповідні оголошення в інтерфейсний розділ цього модуля. Типовим випадком організації програмного модуля є розміщення оголошення функції в розділі interface, а операторів цієї функції – в розділі implementation.

В операторі uses перераховуються модулі Object Pascal, які система Delphi повинна скомпоновати з даною програмою при створенні виконавчого файлу.

Зарезервоване слово type сповіщає компілятор про початок розділу опису типів. Будь-які дані, тобто константи, змінні, властивості, значення функцій або виразу, в Object Pascal характеризуються своїми типами. Тип визначає безліч допустимих значень, які може мати той або інший об'єкт, а також безліч допустимих операцій, які застосовні до нього. Крім того, тип визначає також і формат внутрішнього представлення даних в пам'яті ПК.

Секції private і public визначають області видимості елементів опису класу. Класами в Object Pascal називаються спеціальні типи, які містять поля, методи і властивості. Секція public не накладає обмежень на область видимості перераховуваних в ній полів, методів і властивостей – їх можна викликати в будь-якому іншому модулі програми. Секція private звужує область видимості до мінімуму: закриті елементи опису доступні тільки усередині методів даного класу і підпрограмах, що знаходяться в тому ж модулі, де описаний клас. Елемент, оголошений в секції private, стає недоступним навіть найближчим нащадкам класу, якщо вони розміщуються в інших модулях.

Далі слідують автоматично створені заготовки Delphi для обробників подій.

Під ключовим словом implementation проекту знаходиться так звана директива $R. Вона повідомляє компілятор, що в проект потрібно включити ресурс Windows, вказаний в тексті директиви. Символ зірочки (*), використаний як ім'я файлу, означає, що ім'я файлу ресурсу співпадає з ім'ям файлу проекту. Файл (.dfm) містить бінарне уявлення створеною за допомогою Form Designer форми.

Зарезервоване слово var визначає розділ оголошення змінних інтерфейсної секції.

Принцип роботи прикладних програм

При запуску програми “Server” на екрані адміністратора з'являється вікно представлене на рис.3.1. Програма-сервер (сервер) переходить в режим прослуховування. При запуску програми “Client” на екрані користувача з'являється вкладка “Interactive” вікна, що представлене на рис. 3.2. Програма-клієнт (клієнт) автоматично встановлює зв'язок з сервером. Для приймання списку доступних відеофайлів, клієнт посилає запит серверу, що супроводжується натисненням користувача кнопки “Send list request”. Після отримання запиту від клієнта, сервер автоматично посилає список доступних відеофайлів, який вказаний на панелі “Archive file content”. Отриманий список відображається на панелі “Available files list” клієнта. Вибраний користувачем файл поміщається в рядок вводу “Chosen file”. Для отримання вказаного файлу, клієнт посилає запит на сервер, що супроводжується натисненням користувача кнопки “Send videofile request”. Отримана назва файлу запиту від клієнта поміщається в рядок вводу “Request file” на сервері. Затвердивши запит, адміністратор натискає кнопку “Adopt”, після чого назва файлу відображається в рядку вводу “Send file”. Адміністратор може вручну вибрати файл, натиснувши кнопку “...”. Відправка файлу здійснюється після натиснення кнопки “Send”. Параметри передачі файлу відображаються на панелі угрупування компонентів “Send file parameters”. Користувач проглядає отриманий файл на відеопрогравачі, розміщеному на вкладці “Video player”, за допомогою кнопок управління “Play”,”Pause” і “Stop”.

Аналіз програмного коду

Початковий текст програмного коду прикладної програми “Server” приведений в розділі implementation, в лістингу Б.2 додатку Б. Початковий текст програмного коду програми “Client” приведений в розділі implementation, в лістингу Б.3 додатку Б.

Механізм взаємодії клієнта і сервера в Delphi заснований на використанні сокетного з'єднання і подальшого обміну даними. Сокетом (socket) називається спеціальний об'єкт, що створюється для відправки і отримання даних через мережу. Цей об'єкт створюється усередині бібліотеки сокетів і володіє двома основними характеристиками: протоколом і адресою, до яких він прив'язаний. Формат адреси сокета визначається конкретним протоколом. Зокрема, для протоколів TCP і UDP адреса складається з IP-адреса мережевого інтерфейсу і номера порту.

У першій частині програми, коли між сервером і клієнтом відбувається обмін текстовими даними, комунікація реалізована через стек протоколів TCP/IP.

Перед тим, як передавати дані по протоколу TCP, необхідно встановити зв'язок між двома комп'ютерами. Комп'ютер, який ініціалізує цей зв'язок, називається клієнтом, а комп'ютер, який повинен відгукнутися на ініціалізацію зв'язку для обміну даними, – сервером. Відповідно компоненти Delphi, які забезпечують комунікацію по протоколу TCP, розбиті на дві групи – клієнтські (ClientSocket) і серверні (ServerSocket). IP-адреса і номери портів вказані у відповідних властивостях компонентів, що приведені в додатку В.

При запуску програми “Server” відбувається виконання процедури: “procedure TMainForm.FormCreate(Sender: TObject);”. Рядок “ServerSocket1.Active:=true;” свідчить про активізацію серверного сокета 1 (ServerSocket1), який переходить в режим прослуховування, точніше – очікування запиту від клієнта. Не маючи методів ініціалізації зв'язку, сервер постійно опитує відповідний порт на предмет появи запиту від клієнта. Зміна властивості Active компоненту ServerSocket стартує або припиняє опит порту, зазаченого в його властивості Port.

Активізація клієнтського сокета 1 (ClientSocket1) відбувається по натисненню користувачем прграми “Client” кнопки “Send list request”. Компонент ClientSocket1 з'єднується з сервером, адреса якого вказана у властивості Address, і через порт, вказаний у властивості Port. Після успішного встановлення зв'язку з сервером можна почати обмін даними між клієнтом і сервером. У клієнтській прикладній програмі буде викликано подію OnConnect. Обробником даної події є процедура: “procedure TMainForm. ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);”. Тіло процедури складається з рядка “Socket.SendText('s');”, виконання якої приводить до відправки змінної 's' рядкового типу методом SendText. Змінна 's' є запитом для отримання від сервера списку доступних відеофайлів.

На приймальній стороні, по прийняттю даних від клієнта, виконується подія OnClientRead серверного сокета 1, обробником якої є процедура: “procedure TMainForm.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);”. Тіло процедури починається аналізом команди, що прийшла, від клієнта. Якщо це буква 's', означає клієнт просить прислати йому файл. Але перш ніж посилати дані, файл потрібно відкрити і завантажити. Для цього використовується об'єкт файлового потоку (змінна fs типу TFileStream). Спочатку ця змінна ініціалізується: “fs:=TFileStream.Create('output.txt', fmOpenRead);”. Як параметри конструктора передається ім'я файлу і режим, в якому буде підключений файл. Текстовий файл з ім'ям “output.txt” містить список доступних клієнтові відеофайлів. Прапор fmOpenRead визначає режим читання файлу. Після відкриття поточна позиція у файлі встановлюється в початок: “fs.Position:=0;”.

Для коректного прийому файлу на клієнтській стороні, в першу чергу відправляється розмір файлу за допомогою методу SendText: “Socket.SendText ('Size:'+IntToStr(fs.Size) + #0);”. На початку даних, що відправляються, стоїть слово “size:”, по якому клієнт дізнається, що висланий розмір файлу. Після цього йде сам розмір, перетворений в рядок. В самому кінці рядку додається нульовий символ #0, по якому клієнт зможе відокремити цю інформацію від даних самого файлу. Далі відправляється вибраний файл за допомогою методу Sendstream компонента Socket: “ Socket.SendStream(fs);”.

Обробником події OnRead компонента “ClientSocket1”, є процедура прийняття клієнтом висланого сервером файла: “procedure TMainForm.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);”. Умовно процедура розділена на дві частини. На самому початку зберігається прийнятий текст в змінній s: “s:= Socket.ReceiveText;”. Наступний шматок коду виконуватиметься, якщо змінна Reciving рівна true. Далі необхідно проаналізувати другу частину процедури.

Тут відбувається перевірка: якщо перші п'ять символів тексту, що прийшов, рівні слову “size:”, означає, що отриманий розмір файлу і повинен початися його прийом. Спочатку вирізається розмір і зберігається в текстовій змінній. Для цього копіюються з тексту, що прийшов, всі символи від шостого (після слова “size:”) і до символу #0: “sl:= copy( s, 6, Pos(#0, s ) - 6 ) ;”. Наступним рядком відбувається перетворення текстового представлення розміру в число і збереження його в змінній DataSize. Далі з тексту, що прийшов, видаляються всі символи до першого нульового символу #0, тобто видаляються інформація про розмір передаваного файлу. Змінна Reciving встановлюється рівною true. Ця змінна говорить про те, що почалася передача файлу. Дані приймаються пакетами розміром приблизно по 8 Кбайт. Щоб зберегти їх у файл, створюється файловий потік: “fs:=TFileStream.Create('output.txt',fmCreate);”. Як ім'я указується “output.txt”. Як прапор при відкритті файлу вказаний fmCreate, що примушує створити новий файл. Якщо такий файл вже існує, то він буде перезаписаний. Тепер необхідно повернутися до першої частини процедури.

Початок відбувається з перевірки: якщо змінна Reciving рівна true, значить, відбувається прийом даних, і отриманий черговий пакет файлу. Він зберігається тим же способом. Після цього відбувається порівняння: якщо розмір потоку рівний отриманому розміру файлу, то файл прийнятий повністю, і можна його закривати, вимикати змінну Reciving і виводити повідомлення про вдалий прийом. Отримані дані відображаються на панелі “Available files list ”: “FileListBox1.Items.LoadFromFile('Output.txt');”. Властивості використаних в програмі “Client” компонентів наведені в додатку Г.

Назва вибраного користувачем файлу поміщається в рядок введення “Chosen file” і відправляється на сервер натисненням кнопки “Send videofile request” (рис. 3). Обробником події для натиснення даної кнопки є процедура: “procedure TMainForm.Button3Click(Sender: TObject);”. У тілі процедури використаний метод SendText для відправки запиту клієнтським сокетом 2 (ClientSocket2), який активізувався при запуску програми “Client” процедурою: “procedure TMainForm.FormCreate(Sender: TObject);”.

Активізований при запуску програми серверний сокет 2 (ServerSocket2), приймає запит і поміщає дані в рядок вводу “Request file”. Це відбувається по виконанню обробника події OnClientRead компоненту ServerSocket2: “procedure TMainForm. ServerSocket2ClientRead(Sender: TObject; Socket: TCustomWinSocket);”. Властивості використаних в програмі “Server” компонентів наведені в додатку Д.

Характеристики

Тип файла
Документ
Размер
9,56 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6510
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее