Professional Documents
Culture Documents
сокеты 08.12
сокеты 08.12
Гордiйчук Ю.С.
(прізвище та ініціали) (підпис)
Керівник проекту
ст. викл. Деркач М.В.
(посада, вчене звання, науковий ступінь, прізвище та ініціали) (підпис)
Результати захисту:
Національна шкала _______
Кількість балів: __________
Оцінка: ECTS ___________
Члени комісії:
_________________________ ________
(прізвище та ініціали) (підпис)
________________________ ________
(прізвище та ініціали) (підпис)
_________________________ ________
(прізвище та ініціали) (підпис)
Дата_________
Сєвєродонецьк – 2019
2
ЗАВДАННЯ
НА КУРСОВУ РОБОТУ
Гордiйчук Юрiй Сергiйович
(прізвище, ім'я, по батькові)
1. Тема проекту (роботи) Розроблення програмних додатків за технологією
«клієнт-сервер». Метод комунікації – сокети.
затверджена наказом по інституту від « » 2018 р. № .
2. Термін подання студентом закінченого проекту (роботи) до 22.12.2019__
3. Вихідні дані до проекту (роботи) Розробити окремі додатки: додаток-
сервер і два додатки-клієнти. Функції додатку-серверу:а) створення сокетів;
б) отримання даних від додатків-клієнтів; в) вивід на екран отриманих даних.
Функції додатку-клієнту 1: а) відкрити сокет; б)встановити зв'язок с
сервером; в) підготувати і передати серверу такі дані: розмір файла підкачки
у байтах; кількість вільних байтів у файлі підкачки. Функції додатку-клієнту
2: а) відкрити сокет; б)встановити зв'язок с сервером; в)підготувати і
передати серверу такі дані: ширина й висота іконки додатку, ширина й
висота вертикальної полоси прокрутки. За необхідності синхронізації
процесів вибраний засіб синхронізації обґрунтувати. Налаштування
проводити на локальному комп’ютері.
4. Зміст розрахунково-пояснювальної записки (перелік питань, які потрібно
розробити) структура та оформлення пояснювальної записки повинна
відповідати вимогам методичних вказівок до курсової роботи і ДСТУ.
Основна частина записки повинна вміщувати: постановку задачі; короткі
теоретичні відомості з теми курсової роботи (сутність, область застосування,
переваги и недоліки архітектури «клієнт-сервер»; огляд методу комунікації
через відображення файлу у пам'ять); розробку та опис алгоритму роботи
додатків; результати застосування додатків у вигляді копій екрану. У додатку
до записки навести роздруківку програмних додатків.
5. Перелік графічного матеріалу (з точною вказівкою обов'язкових креслень)
графічні матеріали до курсової роботи не вимагаються
6. Дата видачі завдання
3
КАЛЕНДАРНИЙ ПЛАН
РЕФЕРАТ
Зміст
ВСТУП…………………………………………………………………. 6
1. Основна частина……………………………………………………. 7
1.1 Постановка завдання………………………………………………. 7
1.2 Короткі теоретичні основи розроблюваної теми………………… 7
1.3 сокети Windows..…………………………………………………….9
1.4 Порти……………………………………………………………….. 10
1.5 Потокові сокети (stream socket)……………………………………11
1.6 Клас Socket………………………………………………………… 12
2. Розробка і опис роботи………………………………………………14
2.1 Сервер ТСР………………………………………………………… 14
2.2 Клієнт на TCP……………………………………………………… 18
Висновок……………………………………………………………….. 19
Список використаних джерел………………………………………… 20
3. Додатки……………………………………………………………… 21
3.1 Додаток А……………………………………………………………21
3.2 Додаток Б…………………………………………………………….23
6
ВСТУП
Клієнт - серверні додатки - це додатки, засновані на мережевій
архітектурі різної зв'язності, що з'єднує для виконання прикладних завдань
різні пристрої, кожне з пристроїв може виконувати роль клієнта або сервера.
Клієнт-серверні додатки активно застосовуються в бізнесі, на підприємствах
та інших організаціях для забезпечення робочого процесу, наділення
співробітників зручними робочими інструментами, і, як наслідок,
підвищення віддачі від праці.
Рано чи пізно може настати момент, коли єдиним варіантом для
подальшого розвитку автоматизованих систем управління підприємством
стане архітектура клієнт-сервер. Архітектура клієнт-сервер стає життєво
необхідною, коли число користувачів одночасно активно користуються
одними і тими ж даними перевищує 10-15 чоловік. Якщо перед
підприємством постає завдання побудови системи, в яких число місць,
одночасно активно працюють з даними, перевищує 20, практично єдиним
варіантом для нього є клієнт-сервер.
В роботі розроблено 3 додатка, додаток-сервер і 2 програми-клієнта,
реалізованих на мові С ++ з використанням базових функцій Win32 API. С ++
- це мова програмування, який був розроблений для забезпечення глибокого і
детального контролю процесу розробки. Win32 API - набір базових функцій
інтерфейсів програмування додатків операційних систем сімейств Microsoft
Windows корпорації «Майкрософт». Додатки створені в Microsoft Visual
Studio 2010 Professional. Microsoft Visual Studio - лінійка продуктів компанії
Майкрософт, що включають інтегроване середовище розробки програмного
забезпечення і ряд інших інструментальних засобів.
7
1. Основна частина
1.1 Постановка завдання
Відповідно до завдання потрібно розробити 3 окремих додатки.
Додаток-сервер має виконувати такі функції: створення сокетів, отримання
даних від програм-клієнтів, висновок на екран отриманих даних. Додаток-
клієнт 1 має виконувати такі функції: відкриття сокета, установка зв'язку з
сервером, підготовка і передача сервера таких даних: системні кольори 2-х
елементів вікна програми, код розкладки клавіатури. Додаток-клієнт 1 має
виконувати такі функції відкриття сокета, установка зв'язку з сервером,
підготовка і передача сервера таких даних: ідентифікатор поточного процесу,
дескриптор поточного процесу. Додатки повинні бать розроблені за
технологією «клієнт-сервер». Метод комунікації між процесами - сокети.
1.2 Короткі теоретичні основи розроблюваної теми
Моделі клієнт-сервер - це технологія взаємодії в інформаційній мережі.
Сервер має право керування тим чи іншим ресурсом, а клієнт - користування
ним. Поняття "клієнт" і "сервер" описують лише розподіл ролей при
виконанні конкретного завдання, але не якісь окремі види комп'ютерів або
програм. На одному і тому ж комп'ютері можуть одночасно працювати
програми, які виконують як клієнтські, так і серверні функції.
Кожен конкретний сервер визначається видом того ресурсу, яким він
володіє. Цей принцип поширюється і на взаємодію програм. Програма, що
виконує надання відповідного набору послуг, розглядається в якості сервера,
а програми, які користуються цими послугами, прийнято називати клієнтами.
Програми мають розподілений характер, тобто одна частина функцій
прикладної програми реалізується в програмі-клієнті, а інша - в програмі-
сервері, а для їх взаємодії визначається деякий протокол. Програма клієнт
взаємодіє з сервером, використовуючи певний протокол, який встановлює
правила обміну даними. Клієнт може запитувати з сервера будь-які
документи, маніпулювати даними безпосередньо на сервері, запускати на
ньому нові програми і т. П. Отримані від сервера дані клієнт може надавати
8
Raw
Підтримує доступ до базового транспортного протоколу.
Stream
Підтримує потокові сокети. Значення Stream вимагає вказати Tcp для
типу протоколу.
Третій і останній параметр визначає тип протоколу, необхідний для
сокета. У параметрі РrotocolType можна вказати наступні найбільш важливі
значення - Tcp, Udp, Ip, Raw.
Наступним кроком має бути призначення сокета за допомогою методу
Bind (). Коли сокет відкривається конструктором, йому не призначається ім'я,
а тільки резервується дескриптор. Для призначення імені сокету сервера
викликається метод Bind (). Щоб сокет клієнта міг ідентифікувати потоковий
сокет TCP, серверна програма повинна дати ім'я своєму сокету:
sListener.Bind(ipEndPoint);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
Висновок
Метою даної курсової роботи була розробка додатків архітектури
"клієнт-сервер". Розроблені програми включають: додаток, що виконує
функції сервера і два додатки, які виконують функції клієнтів.
По закінченню виконання роботи, розроблені програми були перевірені
на практиці і повністю підтвердили свою працездатність. Були проведені
необхідні дослідження і складені схеми алгоритмів до основних модулів
додатків.
Відповідно до даної технології, клієнт запитує у сервера деякі послуги,
надаючи певні вихідні дані і параметри за допомогою одного з методів
комунікації між потоками, а сервер обслуговує запит.
Можна зробити висновок, що поставлена задача була досягнута,
завдання на курсовий проект було виконано.
22
3. ДОДАТКИ
3.1 Додаток А
// SocketServer.cs
1. using System;
2. using System.Text;
3. using System.Net;
4. using System.Net.Sockets;
5. namespace SocketServer
6. {
7. class Program
8. {
9. static void Main(string[] args)
10. {
11. // Устанавливаем для сокета локальную конечную точку
12. IPHostEntry ipHost = Dns.GetHostEntry("localhost");
13. IPAddress ipAddr = ipHost.AddressList[0];
14. IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);
15. // Создаем сокет Tcp/Ip
16. Socket sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream,
ProtocolType.Tcp);
17. // Назначаем сокет локальной конечной точке и слушаем входящие
сокеты
18. try
19. {
20. sListener.Bind(ipEndPoint);
21. sListener.Listen(10);
22. // Начинаем слушать соединения
23. while (true)
24. {
25. Console.WriteLine("Ожидаем соединение через порт {0}", ipEndPoint);
24
55. Console.ReadLine();
56. }
57. }
58. }
59. }
3.2 Додаток Б
// SocketClient.cs
1. using System;
2. using System.Text;
3. using System.Net;
4. using System.Net.Sockets;
5. namespace SocketClient
6. {
7. class Program
8. {
9. static void Main(string[] args)
10.{
11.try
12.{
13.SendMessageFromSocket(11000);
14.}
15.catch (Exception ex)
16.{
17.Console.WriteLine(ex.ToString());
18.}
19.finally
20.{
21.Console.ReadLine();
22.}
23.}
26
50.sender.Close();
51.}
52.}
53.}