Лабораторная работа № 1- Передача данных в клиент-серверных приложениях — КиберПедия 

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Лабораторная работа № 1- Передача данных в клиент-серверных приложениях

2019-06-06 67
Лабораторная работа № 1- Передача данных в клиент-серверных приложениях 0.00 из 5.00 0 оценок
Заказать работу

ЛАБОРАТОРНЫЙ ПРАКТИКУМ

ПО УЧЕБНОЙ ДИСЦИПЛИНЕ

 

по учебной дисциплине: Системы передачи информации

 (наименование учебной дисциплины)

 

 

Для направлений подготовки бакалавров:

                         

                     - 27.04.04 – Управление в технических системах

 (код и наименование направления (специальности) подготовки)

 

 

Обсуждено на заседании кафедры 

ПОУТС

 «__ 31 _» _________ 08 _______ 2016 г.

 

протокол № __ 1 __

 

 

Самара

2016

Лабораторная работа № 1- Передача данных в клиент-серверных приложениях

Цель

Построение клиент-серверных приложений для передачи информации.

 

Сервер

 

using System;

using System.Net.Sockets;

using System.Net;

using System.Collections.Generic;

using System.Text;

 

namespace SServer

{

public class SServer

{

   public static void Main(string[] args)

   {

       byte[] bytes = new byte[1024];

       //Устанавливаем для сокета локальную конечную точку

       IPHostEntry ipHost = Dns.Resolve("localhost");

       IPAddress ipAddr = ipHost.AddressList[0];

       IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);

       //Создаем сокет TCP\IP

       Socket sListener = new Socket(AddressFamily.InterNetwork,

            SocketType.Stream, ProtocolType.Tcp);

       //Назначаем сокет локальной конечной точку

       // и слушаем входящие сокеты

       try

       {

           sListener.Bind(ipEndPoint);

           sListener.Listen(10);

           //Начинаем слущать соединения

 

           while (true)

           {

               Console.WriteLine("Waiting for connections... ", ipEndPoint);

               //программа приостанавливается,ожидая входящее соединение

               Socket handler = sListener.Accept();

               string data = null;

               //дождались клиента,пытающегося с нами соединиться 

               int bytesRec = handler.Receive(bytes);

               data += Encoding.ASCII.GetString(bytes, 0, bytesRec);

               //выводим данные на консоль

               Console.WriteLine("Сlient Message: {0}", data);

               string theReply = "Thank You for your message " + data.Length.ToString() + " characters...I'm the Server!!!";

               byte[] msg = Encoding.ASCII.GetBytes(theReply);

               handler.Send(msg);

               handler.Shutdown(SocketShutdown.Both);

               handler.Close();

           }

 

       }

       catch (Exception e)

       {

           Console.WriteLine(e.ToString());

       }

   }

}

}

Клиент

 

using System;

using System.Net.Sockets;

using System.Net;

using System.Collections.Generic;

using System.Text;

 

namespace SClient

{

public class SClient

{

   public static void Main(string[] args)

   {

       byte[] bytes = new byte[1024];

       //Соединяемся с удаленным устройством

       try

       {

           //Устанавливаем удаленную конечную точку для сокета

           IPHostEntry ipHost = Dns.Resolve("127.0.0.1");

           IPAddress ipAddr = ipHost.AddressList[0];

           IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);

           Socket sender = new Socket(AddressFamily.InterNetwork,

               SocketType.Stream, ProtocolType.Tcp);

           //Соединяем сокет с удаленной конечной точкой

           sender.Connect(ipEndPoint);

           Console.WriteLine("Connection... {0}",

               sender.RemoteEndPoint.ToString());

           string theMessage = "Knock... Knock... Follow the white rabbit:)))";

           byte[] msg = Encoding.ASCII.GetBytes(theMessage + " < The End > ");

           //отправляем данные через сокет

           int bytesSent = sender.Send(msg);

           //Получаем ответ от удаленного устройства

           int bytesRec = sender.Receive(bytes);

           Console.WriteLine("Server says: {0}",

               Encoding.ASCII.GetString(bytes, 0, bytesRec));

           //Освобождаем сокет

           sender.Shutdown(SocketShutdown.Both);

           sender.Close();

           Console.Read();

       }

       catch (Exception e)

       {

           Console.WriteLine(e.ToString());

       }

   }

}

}

 

Варианты заданий.

1. Разработать приложение, обеспечивающее мониторинг работы сервера. Серверное приложение принимает входящие сокеты. Клиентское приложение с периодичностью в 1 секунду посылает запросы (ping server). Если сервер недоступен, клиентская программа выводит соответствующее сообщение с подсчетом времени простоя в секундах.

2. Разработать приложение, обеспечивающее получение сообщений от нескольких клиентов. Каждый клиент обладает уникальным идентификатором. Для получения сообщения от клиента на сервере требуется подтверждение. В случае отказа клиент должен быть уведомлен и может послать сообщение повторно. На клиенте можно установить «режим сертифицированной передачи данных» с помощью передачи серверу некоего служебного сообщения, которое сервер принимает в любом случае без подтверждения.

3. Разработать приложение, обеспечивающее подключение клиента. Для установления связи с сервером требуется передача некоего служебного сообщения. После установления связи на сервере и у клиента выводится информация, что подключение установлено. В это время через форму клиентского приложения можно отправлять сообщения на сервер. Завершение связи (разрыв соединения) может быть осуществлено как клиентом, так и сервером (аналогично подключению) с соответствующими уведомлениями.

4. Разработать приложение, обеспечивающее рассылку сообщений. К серверу подключаются несколько клиентов. Сервер с периодичностью в 5 секунд рассылает сообщения всем клиентам с указанием текущего (серверного) времени.

 

Методика выполнения работы

· Ознакомиться с кратким теоретическим материалом;

· определить номер выполняемого варианта;

· для заданного варианта разработать консольное приложение:

· для заданного варианта выполнить программу. Результат выполнения программы необходимо отразить в протоколе выполнения программы

Порядок выполнения работы

· Изучить панели инструментов и принципы размещения и группировки окон среды. Изучить свойства проекта и решения.

· Создать проект и основной программный файл.

· Скомпилировать и запустить проект.

· Составить отчет.

 

Содержание отчета

Отчет должен содержать следующее:

· титульный лист с указанием наименования и цели занятия; фамилии, имени, отчества и номера группы студента; а также номер выполняемого варианта;

· дату выполнения работы;

· цель занятия;

· условие предложенной задачи;

· реализацию соответствующего алгоритма;

· листинг программы;

· выводы о проделанной работе.

 

Цель

Построение клиент-серверных приложений для передачи информации.

Варианты заданий

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

 

Калькулятор выражений.

Разработать программу, вычисляющую арифметические выражения.

Интерфейс клиентской части обеспечивает ввод выражения (в поле формы).

Основные операции: сложение, умножение, деление, возведение в степень (^), факториал (!), sin, cos, tg, ln. Выражение также может содержать скобки.

Добавить настройку точности вычислений (число знаков после запятой).

При нажатии кнопки расчета данные передаются на сервер, где проводится вычисление значения.

Результат сообщается пользователю (ошибка, в случае невозможности вычисления).

Пример выражения: 3,6+2^3*(4!-5/2)=175,6.

Контроль корректности выражения проводится в клиентской части.

      

      2. Перевод величин

Разработать программу, осуществляющую перевод величин.

Пользователь выбирает категорию для перевода.

· Системы счисления: десятичная, шестнадцатеричная, восьмеричная, двоичная.

· Углы: Градусы, радианы, грады.

· Время: секунда, минута, час, сутки, неделя, календарный месяц.

· Расстояния: нанометр, микрон, миллиметр, сантиметр, метр, километр, дюйм, фут, миля.

· Масса: г, кг, тонна, унция, фунт.

· Температура: градус Цельсия, Фаренгейта, Кельвина.

· Передача данных: бит/сек, Кбит/сек, Мбит/сек, Байт/сек, КБайт/сек, МБайт/сек, МБайт/час, ТБайт/сутки.

· Радиация: рентген, зиверт, бэр, грей, рад.

· GPS-координаты: (x,y) WGS-84, (x,y) в географических координатах (широта-долгота).

После выбора категории создается элемент DataGridView из 2 столбцов.

1 столбец содержит название категории.

2 столбец - вводимые значения. Одновременно можно ввести только одно значение.

При нажатии кнопки расчета, данные передаются на сервер, преобразуются и выводятся клиенту.

В каждой категории перевод осуществляется для всех величин данной категории.

Добавить настройку точности преобразований (число знаков после запятой).

 

       3. Тестирование

Разработать систему тестирования.

Клиентское приложение состоит из двух программ – редактирование тестов и тестирование.

1. При редактировании пользователю предлагается составить тест из нескольких вопросов. Для каждого вопроса верен только один вариант ответа. При добавлении вопроса предлагается ввести вопрос в соответствующем поле, задать количество вариантов ответа и ввести их, указав правильный. После чего предлагается добавить новый вопрос.
Тест из нескольких вопросов отправляется на сервер и сохраняется там в виде текстового файла с названием теста (например, «Тест1.txt»).

2. При тестировании предлагается выбрать тестовый файл из списка названий файлов, расположенных на сервере (по запросу клиента сервер считывает названия файлов в своей папке с расширением “.txt”). После чего пользователь проходит тест (отвечает на вопросы, нажимая radio button с вариантом ответа). На каждый ответ пользователю дается 30 сек, после чего ответ считается неправильным, и система переходит к следующему вопросу. По окончании теста пользователю выдается количество правильных ответов. Тест считается пройденным, если количество правильных ответов >60%.

Контроль корректности ввода данных осуществляется на стороне клиента.

Хранитель паролей

Разработать надежную систему хранения паролей, организованную в виде набора записей. Каждая запись состоит из названия, имени пользователя, пароля, комментария. Записи группируются по тематическим группам с определенными названиями (например: пин-коды, интернет, почта, прочее).

Записи и группы можно добавлять/редактировать/удалять. При добавлении/редактировании поля пароля, его значение шифруется.

Алгоритм шифрования пароля реализовать с помощью симметричного алгоритма шифрования RC4 (один ключ используется как для шифрации, так и для дешифрации), путем суммирования исходных данных и ключа по модулю 2 – XOR (“^” в коде С#): <Шифр>=<Исходник> XOR <ключ1>. Для дешифрации используется тот же алгоритм: <Исходник> = <Шифр> XOR <ключ1>. Ключ1 должен совпадать по размеру с исходником, получается циклическим заполнением ключа до нужного размера. Например для ключа «123» ключ1 размером 5 байт будет «12312».

Список записей и групп хранится в файле на сервере, для кодирования всех паролей в списке используется один ключ.

Просмотр списка записей реализовать с помощью DataGridView. В списке вместо пароля выводится «*******», при нажатии на данную ячейку пароль расшифровывается и отображается.

При первом подключении к серверу требуется ввести 2 раза новый пользовательский пароль, который шифруется по алгоритму MD5 (MD5CryptoServiceProvider в пространстве имен System.Security.Cryptography) и сохраняется в отдельном файле на сервере. При последующих подключениях необходимо запросить у пользователя пароль и сравнить его с сохраненным на сервере.

После запуска клиентского приложения пользователь может загрузить список с сервера, или создать новый список.

По алгоритму шифрования MD5, возвращается значение в виде 32-разрядной шестнадцатеричной строки. Данный метод конвертирует, например, символ «1» в значение «06d49632c9dc9bcb62aeaef99612ba6b».

Обратного алгоритма не существует. Расшифровке зашифрованные по MD5 данные не поддаются, а потому проверять пароль зарегистрированного пользователя при попытке входа следует также шифровать по MD5 (приводить вводимый пароль к хеш-значению) и только после этого сравнивать с находящимся на сервере.

Пример использования функции шифрования

using System.Security.Cryptography; 

 

string GetHashString(string s) 

//переводим строку в байт-массив

byte[] bytes = Encoding.Unicode.GetBytes(s); 

//создаем объект для получения средств шифрования 

MD5CryptoServiceProvider CSP = 

     new MD5CryptoServiceProvider(); 

//вычисляем хеш-представление в байтах 

byte[] byteHash = CSP.ComputeHash(bytes); 

string hash = string.Empty; 

//формируем одну цельную строку из массива 

foreach (byte b in byteHash) 

     hash += string.Format("{0:x2}", b); 

return hash; 

 

Адресная книга

Разработать приложение для хранения набора записей-контактов.

Контакты объединяются в тематические группы по названиям (например: дом, друзья, работа).

Каждый контакт содержит: ФИО, псевдоним, адрес, дом. тел., раб. тел., сот. тел., email, рабочие реквизиты, комментарий. Обязательными полями являются Фамилия и Имя.

Контакты и группы можно добавлять/редактировать/удалять.

Просмотр списка контактов реализовать с помощью DataGridView с возможностью сортировки. Реализовать режимы отображения имени: «ФИО», «Фамилия, Имя», «Имя, Фамилия», «Псевдоним».

Реализовать возможность отправки электронной почты выбранному контакту: указывается тема и вводится текст сообщения.

Список контактов хранится в файле на сервере. После запуска клиентского приложения пользователь может загрузить список с сервера, или создать новый список.

Контроль корректности ввода данных осуществляется на стороне клиента с помощью регулярных выражений.

Отправку почты можно реализовать через специальные функции.NET Framework.

Пример кода:

using System.Web;

using System.Net;

using System.Net.Mail;

using System.Net.Mime;

 

//Авторизация на SMTP сервере

SmtpClient Smtp = new SmtpClient("smtp.mail.ru", 25);

Smtp.Credentials = new NetworkCredential("login", "pass");

//Smtp.EnableSsl = false;

 

//Формирование письма

MailMessage Message = new MailMessage();

Message.From = new MailAddress("[email protected]");

Message.To.Add(new MailAddress("[email protected]"));

Message.Subject = "Заголовок";

Message.Body = "Сообщение";

Smtp.Send(Message);//отправка

 

Учет финансов

Разработать систему учета домашних финансов, основанную на учете статей доходов и расходов.

Статьи делятся на 2 типа доходы и расходы. Каждая статья представляет собой запись, содержащую данные для расходов: дата, сумма в руб., назначение платежа. Для доходов: дата, сумма в руб., источник. Каждой записи можно присвоить свой тег (например, для расходов: платежи, еда, развлечения, спорт). Реализовать список записей с остатками на счетах в виде пары значений: счет (например: наличные, электронные деньги, кредитка), значение в руб.

Записи, остатки и теги можно добавлять/редактировать/удалять. При занесении значения в поле суммы реализовать конвертер валют (из долларов, евро в рубли) по фиксированному курсу. Для доходов и расходов реализовать интерфейс занесения депозитов и кредитов. У пользователя запрашивается дата возврата, объем начальных средств и годовой процент. При этом, в зависимости от даты возврата, в список заносятся k ежемесячных записей с автоматически рассчитываемыми значениями сумм.

Реализовать подсчет статистики и баланса за выбранный период времени (неделя/месяц/год/произвольный): статистика по тегам в процентном и суммарном отношении (с возможностью сортировки), суммарные объемы доходов, расходов, прибыли. Выводить предупреждение, если объем расходов превышает объем доходов и суммарный остаток на счетах.

Данные хранятся в файле на сервере. После запуска клиентского приложения пользователь может загрузить список с сервера, или создать новый список.

Контроль корректности ввода данных осуществляется на стороне клиента.

Методика выполнения работы

· Ознакомиться с кратким теоретическим материалом;

· определить номер выполняемого варианта;

· для заданного варианта разработать консольное приложение:

· для заданного варианта выполнить программу. Результат выполнения программы необходимо отразить в протоколе выполнения программы

Порядок выполнения работы

· Изучить панели инструментов и принципы размещения и группировки окон среды. Изучить свойства проекта и решения.

· Создать проект и основной программный файл.

· Скомпилировать и запустить проект.

· Составить отчет.

 

Содержание отчета

Отчет должен содержать следующее:

· титульный лист с указанием наименования и цели занятия; фамилии, имени, отчества и номера группы студента; а также номер выполняемого варианта;

· дату выполнения работы;

· цель занятия;

· условие предложенной задачи;

· реализацию соответствующего алгоритма;

· листинг программы;

· выводы о проделанной работе.

 

 

 


Варианты заданий

Передача данных по LTE.

Методика выполнения работы

· Ознакомиться с кратким теоретическим материалом;

· Определить номер выполняемого варианта;

· Для заданного варианта подготовить реферат и презентацию.ppt.

 

Содержание отчета

Отчет должен содержать следующее:

· титульный лист с указанием наименования и цели занятия; фамилии, имени, отчества и номера группы студента; а также номер выполняемого варианта;

· дату выполнения работы;

· цель занятия;

· формулировку варианта;

· реферат раскрывающий тему исследования;

· выводы о проделанной работе.

 

Варианты заданий

1. HTTP и HTTPS.

2. TLS (SSL).

3. DHCP

4. FTP, SFTP

5. IRC

6. XMPP

7. NTP

8. SMTP

9. POP3

10. IMAP4

11. SSH

Методика выполнения работы

· Ознакомиться с кратким теоретическим материалом;

· Определить номер выполняемого варианта;

· Для заданного варианта подготовить реферат и презентацию *.ppt.

 

Содержание отчета

Отчет должен содержать следующее:

· титульный лист с указанием наименования и цели занятия; фамилии, имени, отчества и номера группы студента; а также номер выполняемого варианта;

· дату выполнения работы;

· цель занятия;

· формулировку варианта;

· реферат раскрывающий тему исследования;

· выводы о проделанной работе.

 

Варианты заданий

1. Twitter

2. WhatsApp

3. Telegram

4. LastPass

5. RunKeeper

6. Instagram

7. Periscope

8. Snapchat

9. Tumblr

10. Foursquare

11. Vine

 

Методика выполнения работы

· Ознакомиться с кратким теоретическим материалом;

· Определить номер выполняемого варианта;

· Для заданного варианта подготовить реферат и презентацию *.ppt.

 

Содержание отчета

Отчет должен содержать следующее:

· титульный лист с указанием наименования и цели занятия; фамилии, имени, отчества и номера группы студента; а также номер выполняемого варианта;

· дату выполнения работы;

· цель занятия;

· формулировку варианта;

· реферат раскрывающий тему исследования;

· выводы о проделанной работе.

 

 

ЛАБОРАТОРНЫЙ ПРАКТИКУМ

ПО УЧЕБНОЙ ДИСЦИПЛИНЕ

 

по учебной дисциплине: Системы передачи информации

 (наименование учебной дисциплины)

 

 

Для направлений подготовки бакалавров:

                         

                     - 27.04.04 – Управление в технических системах

 (код и наименование направления (специальности) подготовки)

 

 

Обсуждено на заседании кафедры 

ПОУТС

 «__ 31 _» _________ 08 _______ 2016 г.

 

протокол № __ 1 __

 

 

Самара

2016

Лабораторная работа № 1- Передача данных в клиент-серверных приложениях

Цель

Построение клиент-серверных приложений для передачи информации.

 


Поделиться с друзьями:

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.151 с.