Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Сервери й клієнти запускайте на одному комп’ютері з адресою 127.0.0.1, якщо в завданні не сказано інше.
Варіанти
Варіант 1. Сервер курсів валют
1. Початковий рівень. Створити консольні програми TCP-сервер і клієнт: сервер зберігає в словнику курси USD, EUR і PLN до гривні, отримує від клієнта рядок з кодом валюти й відповідає курсом або повідомленням «невідома валюта»; клієнт запитує код у користувача.
2. Базовий рівень. Створити TCP-сервер курсів валют, що одночасно обслуговує кількох клієнтів і виконує команди RATE USD, CONVERT 100 EUR UAH і LIST з кодами відповідей 200, 400, 404, та консольний клієнт, який виводить відповіді й завершує роботу командою QUIT.
3. Високий рівень. Створити TCP-сервер курсів валют до гривні з командами RATE і CONVERT, який завантажує курси з файлу CSV (код, курс), приймає аргументи --port і --rates (з --help), обслуговує кількох клієнтів, дописує кожен запит (час, адреса клієнта, команда) у журнал і за командою адміністратора RELOAD перечитує файл; консольний клієнт виводить результати конвертації таблицею з підсумком.
Варіант 2. Мережна вікторина
1. Початковий рівень. Створити TCP-сервер вікторини, який надсилає клієнту по черзі 5 питань із варіантами відповіді, приймає номер відповіді й наприкінці повідомляє кількість правильних відповідей, та консольний клієнт для гравця.
2. Базовий рівень. Створити TCP-сервер вікторини для кількох гравців з питаннями й варіантами відповіді, заданими в програмі: після підключення щонайменше двох гравців сервер розсилає всім однакові питання, приймає відповіді протягом 20 с і після кожного питання надсилає таблицю балів, відсортовану за спаданням; консольний клієнт гравця показує питання й надсилає номер відповіді.
3. Високий рівень. Створити сервер вікторини з питаннями з файлу JSON, аргументами --port, --time і --questions, нарахуванням більшої кількості балів за швидшу відповідь, обробкою відключення гравців і збереженням підсумкової таблиці у файл, а також клієнт Windows Forms з кнопками варіантів відповіді й таймером.
Варіант 3. Віддалений термометр
1. Початковий рівень. Створити програму-датчик, яка щосекунди надсилає UDP-дейтаграму з назвою датчика й випадковою температурою від 18 до 25 °C на 127.0.0.1:6100, і програму-приймач, яка виводить отримані значення з часом отримання.
2. Базовий рівень. Створити програму-датчик, яка щосекунди надсилає UDP-дейтаграму з назвою датчика й випадковою температурою, та UDP-сервер, що приймає вимірювання від кількох датчиків, для кожного датчика зберігає мінімум, максимум і середнє та щоп’ять секунд виводить таблицю; датчик, від якого 10 с немає даних, позначається як «немає зв’язку».
3. Високий рівень. Створити систему моніторингу температури: датчики з аргументами --name і --interval надсилають нумеровані дейтаграми, сервер визначає втрачені й повторні дейтаграми за номерами, записує вимірювання у файл CSV і за TCP-командою STATS повертає клієнту таблицю статистики з відсотком втрат.
Варіант 4. Сервер словника
1. Початковий рівень. Створити TCP-сервер англо-українського словника на 20 слів, який на кожен отриманий рядок відповідає перекладом або повідомленням «слово не знайдено», та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер англо-українського словника з командами GET слово, ADD слово переклад і COUNT, що обслуговує кількох клієнтів одночасно, захищає словник від одночасних змін і відповідає кодами 200, 400, 404, 409 (слово вже існує), та консольний клієнт.
3. Високий рівень. Створити TCP-сервер англо-українського словника з командами пошуку, додавання й видалення слів, який завантажує й зберігає словник у файл JSON, підтримує пошук за префіксом, видалення слів лише після команди LOGIN з паролем з конфігурації, аргументи --port і --file та коректно зберігає дані під час зупинки клавішею Enter; консольний клієнт надсилає команди й виводить відповіді.
Варіант 5. Хрестики-нулики по мережі
1. Початковий рівень. Створити TCP-сервер і клієнт для гри в хрестики-нулики двох гравців на одному комп’ютері: сервер приймає двох клієнтів, по черзі отримує номер клітинки 1–9 і після кожного ходу надсилає обом поле з трьох рядків.
2. Базовий рівень. Створити TCP-сервер гри в хрестики-нулики для двох гравців, які по черзі надсилають номер клітинки 1–9: сервер перевіряє коректність і черговість ходів, визначає перемогу чи нічию, повідомляє результат обом гравцям і пропонує нову гру; консольний клієнт показує поле й повідомлення сервера.
3. Високий рівень. Створити сервер хрестиків-ноликів, що веде кілька ігор одночасно (гравці об’єднуються в пари в порядку підключення), зараховує поразку гравцю, який відключився, веде таблицю результатів за іменами, та клієнт Windows Forms з полем 3×3 з кнопок.
Варіант 6. Файловий сервер
1. Початковий рівень. Створити TCP-сервер, який на команду LIST надсилає клієнту список файлів своєї папки files з розмірами, та консольний клієнт, що виводить отриманий список.
2. Базовий рівень. Створити файловий сервер з командою GET ім’я, який передає файл із префіксом розміру (8 байтів, big-endian), та клієнт, що зберігає файл у поточну папку і виводить перебіг завантаження у відсотках; імена зі шляхом сервер відхиляє.
3. Високий рівень. Створити файловий сервер з командами LIST, GET і PUT, обмеженням розміру файлу, перевіркою цілісності за хешем SHA-256 після передавання й паралельним обслуговуванням клієнтів, та клієнт з аргументами get і put, виводом швидкості передавання й кодами завершення.
Варіант 7. Табло вокзалу
1. Початковий рівень. Створити TCP-сервер, який щоп’ять секунд надсилає всім підключеним клієнтам рядок з номером поїзда, напрямком і часом прибуття, та клієнт-табло, що виводить отримані рядки.
2. Базовий рівень. Створити сервер табло вокзалу, у консолі якого оператор вводить команди ADD номер напрямок час і DELAY номер хвилини, а сервер розсилає оновлений розклад усім клієнтам-табло; клієнт після кожного оновлення очищає консоль і виводить таблицю.
3. Високий рівень. Створити систему табло вокзалу: розклад завантажується з файлу JSON, клієнти під час підключення вказують платформу й отримують лише її поїзди, сервер автоматично змінює статус «прибуває» за 5 хв до прибуття, а клієнт Windows Forms показує розклад у DataGridView.
Варіант 8. Мережний аукціон
1. Початковий рівень. Створити TCP-сервер аукціону одного лота з початковою ціною 1 000 грн, який приймає від клієнта ставку й відповідає «ставку прийнято», якщо вона більша за поточну, та консольний клієнт учасника.
2. Базовий рівень. Створити TCP-сервер аукціону одного лота з початковою ціною для кількох учасників, який приймає ставки (більші за поточну), розсилає всім кожну нову ставку з іменем учасника, завершує торги через 30 с після останньої ставки й оголошує переможця та ціну, та консольний клієнт учасника.
3. Високий рівень. Створити сервер аукціону з кількома лотами з файлу, мінімальним кроком ставки, захистом від одночасних ставок, журналом торгів у файлі CSV, аргументами --port і --lots, та клієнт Windows Forms зі списком лотів, поточною ціною і таймером.
Варіант 9. Сервер нотаток
1. Початковий рівень. Створити TCP-сервер, який приймає від клієнта рядки-нотатки, нумерує їх і на команду LIST повертає всі нотатки, та консольний клієнт.
2. Базовий рівень. Створити сервер нотаток з командами ADD, GET id, DELETE id, LIST, у якому кожен запит і відповідь є одним рядком JSON (System.Text.Json), та клієнт, що формує запити з введених команд і виводить відповіді таблицею.
3. Високий рівень. Створити сервер нотаток з обміном повідомленнями JSON із префіксом довжини, окремими нотатками для кожного користувача після LOGIN, збереженням у файл, обмеженням розміру повідомлення, та клієнт з аргументами командного рядка (add, list, delete, --help) і кодами завершення.
Варіант 10. Моніторинг комп’ютерів
1. Початковий рівень. Створити програму-агент, яка підключається до TCP-сервера й щотри секунди надсилає ім’я комп’ютера та обсяг робочої пам’яті процесу, і сервер, що виводить отримані рядки.
2. Базовий рівень. Створити програму-агент, яка щотри секунди надсилає TCP-серверу ім’я комп’ютера та обсяг робочої пам’яті процесу, і сервер моніторингу для кількох агентів, який зберігає останні дані кожного агента, щоп’ять секунд виводить таблицю (ім’я, адреса, пам’ять, час останнього звіту) і позначає агента, відключеного без повідомлення, через тайм-аут.
3. Високий рівень. Створити систему моніторингу, у якій агенти надсилають повідомлення JSON з назвою, кількістю процесорів, пам’яттю і вільним місцем на диску, сервер зберігає історію у файл CSV і попереджає про перевищення порогів з конфігурації, а клієнт Windows Forms показує таблицю агентів з оновленням у реальному часі.
Варіант 11. Розподілене голосування
1. Початковий рівень. Створити TCP-сервер голосування з трьома варіантами, який приймає від клієнта номер варіанта й відповідає поточними результатами, та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер голосування з трьома варіантами, що приймає голоси (ім’я й номер варіанта) від кількох клієнтів, дозволяє лише один голос з одним іменем, після кожного голосу розсилає всім результати у відсотках і завершує голосування командою оператора CLOSE, та консольний клієнт.
3. Високий рівень. Створити систему голосування з питанням і варіантами з файлу, одноразовими кодами виборців з файлу, збереженням результатів після кожного голосу, аргументами --port, --poll, --codes, та клієнт Windows Forms зі стовпчиковою діаграмою результатів.
Варіант 12. Мережний «Морський бій»
1. Початковий рівень. Створити TCP-сервер, що розміщує на полі 5×5 три однопалубні кораблі, приймає від клієнта постріл у форматі B3 і відповідає «влучив» або «мимо», та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер «Морського бою» для двох гравців з полями 10×10, у якому кожен гравець розставляє кораблі командою PLACE, гравці стріляють по черзі (постріл у форматі B3), сервер повідомляє результати обом і визначає переможця, та консольний клієнт гравця.
3. Високий рівень. Створити сервер «Морського бою» з перевіркою правил розстановки, обробкою відключення гравця, повторною грою та протоколом із кодами відповідей, та клієнт Windows Forms з двома полями (свої кораблі й постріли по супернику).
Варіант 13. Сервер погоди
1. Початковий рівень. Створити TCP-сервер, який зберігає в словнику температуру для п’яти міст і на назву міста від клієнта відповідає температурою, та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер погоди, що завантажує дані міст (температура, вологість, вітер) з файлу CSV, виконує команди GET місто і SUBSCRIBE місто, а підписаним клієнтам надсилає нові дані, коли оператор змінює їх командою в консолі сервера, та консольний клієнт.
3. Високий рівень. Створити сервер погоди з підписками кількох клієнтів на кілька міст, прогнозом на три дні, відповідями JSON і збереженням змін у файл, та клієнт Windows Forms, який показує таблицю підписаних міст і оновлює її без блокування інтерфейсу.
Варіант 14. Чат із кімнатами
1. Початковий рівень. Створити TCP-сервер чату, який пересилає повідомлення кожного клієнта всім іншим клієнтам із зазначенням адреси відправника, та консольний клієнт з окремою задачею для отримання повідомлень.
2. Базовий рівень. Створити TCP-сервер чату з командами /join кімната, /rooms і /w ім’я текст (приватне повідомлення), що розсилає повідомлення лише учасникам тієї самої кімнати й повідомляє про вхід і вихід користувачів, та консольний клієнт з окремою задачею для отримання повідомлень.
3. Високий рівень. Створити сервер чату з кімнатами, унікальними іменами, історією останніх 20 повідомлень кожної кімнати для нових учасників, обмеженням частоти повідомлень і журналом у файлі, та клієнт Windows Forms зі списками кімнат і користувачів.
Варіант 15. Бронювання місць у залі
1. Початковий рівень. Створити TCP-сервер кінозалу з 5 рядами по 10 місць, який на команду MAP надсилає схему зайнятих місць, а на BOOK ряд місце – бронює вільне місце, та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер бронювання місць кінозалу з 5 рядами по 10 місць (команди MAP, BOOK ряд місце, CANCEL ряд місце), що обслуговує кількох клієнтів одночасно, гарантує, що одне місце не буде заброньоване двічі, дозволяє скасувати лише власне бронювання і розсилає всім клієнтам оновлену схему залу, та консольний клієнт.
3. Високий рівень. Створити сервер бронювання кількох сеансів з тимчасовим блокуванням місця на 2 хв до підтвердження, збереженням бронювань у файл JSON і звітом про заповненість, та клієнт Windows Forms зі схемою залу з кнопок.
Варіант 16. Сервер шахового годинника
1. Початковий рівень. Створити TCP-сервер, який приймає двох гравців, дає кожному по 60 с і після команди MOVE від гравця, чия черга, перемикає годинник та надсилає обом залишок часу, та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер шахового годинника для двох гравців, який після команди MOVE від гравця, чия черга, перемикає годинник; контроль часу задається аргументом (хвилини й додаток секунд за хід), сервер щосекунди розсилає час обом гравцям, фіксує поразку за часом і виконує команди PAUSE та RESUME; консольний клієнт гравця.
3. Високий рівень. Створити сервер шахових годинників для кількох партій одночасно з кодами партій, журналом ходів і часу у файлі CSV, обробкою відключення гравця та клієнт Windows Forms з двома циферблатами й кнопкою ходу.
Варіант 17. Мережна дошка оголошень
1. Початковий рівень. Створити TCP-сервер дошки оголошень, який зберігає отримані від клієнтів оголошення й на команду LIST повертає їх з номерами, та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер дошки оголошень з категоріями, командами POST категорія текст, LIST категорія і SUBSCRIBE категорія та розсиланням нових оголошень підписаним клієнтам, та консольний клієнт.
3. Високий рівень. Створити сервер дошки оголошень з терміном дії оголошень, видаленням лише автором, збереженням у файл JSON, обмеженням довжини й кількості оголошень від одного користувача, та клієнт Windows Forms з фільтром за категоріями.
Варіант 18. Віддалений калькулятор матриць
1. Початковий рівень. Створити TCP-сервер, який отримує від клієнта дві матриці 2×2 рядком чисел, повертає їх суму, та консольний клієнт, що запитує елементи матриць.
2. Базовий рівень. Створити TCP-сервер матричних операцій, який отримує запит JSON з операцією (add, mul, transpose) і матрицями довільного розміру, перевіряє розміри й повертає результат або повідомлення про помилку у форматі JSON, та консольний клієнт, що формує запит із введених матриць.
3. Високий рівень. Створити сервер матричних операцій з обміном JSON із префіксом довжини, обмеженням розміру матриці, обчисленням визначника й оберненої матриці, та клієнт, що читає матриці з файлів, указаних аргументами, і виводить результат вирівняною таблицею.
Варіант 19. Сервер цитат дня
1. Початковий рівень. Створити UDP-сервер, який на будь-яку отриману дейтаграму відповідає випадковою цитатою зі списку, та UDP-клієнт, що надсилає запит і виводить відповідь.
2. Базовий рівень. Створити UDP-сервер цитат, який завантажує цитати з файлу, виконує запити RANDOM, AUTHOR ім’я і COUNT, а клієнт повторює запит до трьох разів, якщо відповідь не надійшла протягом 2 с.
3. Високий рівень. Створити UDP-сервер цитат зі статистикою запитів за адресами клієнтів, обмеженням кількості запитів від однієї адреси за хвилину і TCP-командою STATS для адміністратора, та клієнт з аргументами --server, --author, --help.
Варіант 20. Спільний список покупок
1. Початковий рівень. Створити TCP-сервер списку покупок з командами ADD товар і LIST, який зберігає товари в пам’яті, та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер спільного списку покупок, що обслуговує кількох клієнтів, виконує команди ADD товар, LIST, BUY номер, REMOVE номер і розсилає всім клієнтам кожну зміну разом з іменем користувача, який її виконав, та консольний клієнт.
3. Високий рівень. Створити сервер кількох спільних списків покупок з кодом доступу до списку, збереженням у файл JSON, кількістю й ціною товарів і підсумковою сумою, та клієнт Windows Forms з CheckedListBox, який оновлюється без блокування інтерфейсу.
Варіант 21. Сервер перевірки паролів
1. Початковий рівень. Створити TCP-сервер, який отримує від клієнта ім’я та пароль, порівнює їх зі словником користувачів і відповідає OK або DENIED, та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер автентифікації, який отримує від клієнта ім’я та пароль, зберігає хеші паролів SHA-256 із сіллю, блокує користувача на 1 хв після трьох невдалих спроб і відповідає кодами 200, 401, 423, та консольний клієнт.
3. Високий рівень. Створити сервер автентифікації з реєстрацією користувачів, вимогами до складності пароля, збереженням облікових записів у файл, журналом спроб входу й тайм-аутом бездіяльності, та клієнт з аргументами register і login.
Варіант 22. Мережний пінг-монітор
1. Початковий рівень. Створити UDP-ехо-сервер, який повертає кожну отриману дейтаграму відправнику, та клієнт, що надсилає 5 дейтаграм і виводить час відповіді на кожну в мілісекундах.
2. Базовий рівень. Створити UDP-ехо-сервер і UDP-клієнт перевірки зв’язку, який надсилає нумеровані дейтаграми із заданим інтервалом, чекає на відповідь не довше 1 с і виводить мінімальну, середню та максимальну затримку й відсоток втрат.
3. Високий рівень. Створити пінг-монітор з аргументами --host, --port, --count, --interval, сервер з параметром імітації втрат (відсоток дейтаграм, які він ігнорує), записом результатів у файл CSV і таблицею підсумків для кількох серверів.
Варіант 23. Кухня ресторану
1. Початковий рівень. Створити TCP-сервер кухні, який приймає від клієнта-офіціанта замовлення рядком, присвоює йому номер і відповідає номером замовлення, та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер кухні ресторану, до якого підключаються консольні клієнти офіціантів і кухаря: офіціант надсилає замовлення рядком і отримує його номер, кухар змінює статус замовлення командою STATUS номер готується|готово, а сервер сповіщає офіціанта, який створив замовлення.
3. Високий рівень. Створити систему замовлень ресторану з меню з файлу JSON, обчисленням суми замовлення, чергою замовлень для кухаря, звітом за зміну у файлі CSV, та клієнт офіціанта Windows Forms зі списком замовлень і їх статусами.
Варіант 24. Мережна гра «Слова»
1. Початковий рівень. Створити TCP-сервер, який надсилає клієнту слово й приймає слово, що починається з останньої літери попереднього, перевіряючи цю умову, та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер гри «Слова» для кількох гравців (кожне слово починається з останньої літери попереднього) з черговістю ходів, перевіркою слів за словником з файлу, забороною повторів і вибуванням гравця, який не відповів протягом 30 с, та консольний клієнт.
3. Високий рівень. Створити сервер гри «Слова» з кількома ігровими кімнатами, рахунком за довжину слів, таблицею рекордів у файлі JSON і обробкою відключень, та клієнт Windows Forms з історією слів і таймером ходу.
Варіант 25. Сервер обміну фото
1. Початковий рівень. Створити TCP-клієнт, який надсилає файл зображення з префіксом розміру (8 байтів), та сервер, що зберігає отримане зображення у папку photos і відповідає кількістю збережених байтів.
2. Базовий рівень. Створити TCP-сервер обміну фото, який приймає зображення з іменем і розміром у заголовку, перевіряє розширення (.png, .jpg) і розмір до 10 МБ, на команду LIST повертає список фото, а на GET ім’я – файл, та консольний клієнт з командами надсилання, списку й отримання.
3. Високий рівень. Створити сервер обміну фото з мініатюрами, створеними під час завантаження, і клієнт Windows Forms, який надсилає вибране в OpenFileDialog зображення з індикатором перебігу, показує мініатюри в ListView і відкриває повне фото в PictureBox.
Варіант 26. Розклад автобусів
1. Початковий рівень. Створити TCP-сервер, який на назву зупинки від клієнта повертає список найближчих рейсів із заданого в програмі розкладу, та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер розкладу автобусів з даними з файлу CSV, командами STOP назва, ROUTE номер і DELAY маршрут хвилини (оператор) та розсиланням повідомлень про затримки клієнтам, які запитували цю зупинку, та консольний клієнт.
3. Високий рівень. Створити сервер розкладу з UDP-виявленням сервера в локальній мережі, відповідями JSON, підписками на зупинки й обліком затримок у файлі, та клієнт Windows Forms, який знаходить сервер без введення адреси.
Варіант 27. Сервер журналів
1. Початковий рівень. Створити TCP-сервер, який дописує кожен отриманий від клієнта рядок у файл log.txt з часом і адресою клієнта, та клієнт, що надсилає 10 тестових записів.
2. Базовий рівень. Створити TCP-сервер журналів, що приймає записи у форматі рівень|джерело|текст від кількох клієнтів, записує їх в окремі файли за джерелами й на команду TAIL джерело 5 повертає останні записи, та консольний клієнт.
3. Високий рівень. Створити сервер журналів з UDP-прийомом записів, TCP-командами фільтрації за рівнем і часом, обертанням файлів після 1 МБ, та клієнт-переглядач з аргументами --level і --follow, який виводить нові записи в реальному часі.
Варіант 28. Лічильник відвідувачів музею
1. Початковий рівень. Створити програму-турнікет, яка надсилає TCP-серверу IN або OUT за натисканням клавіші, і сервер, що виводить поточну кількість відвідувачів.
2. Базовий рівень. Створити програму-турнікет, яка надсилає TCP-серверу IN або OUT за натисканням клавіші, і сервер лічильника відвідувачів музею для кількох турнікетів одночасно з атомарною зміною лічильника, обмеженням місткості (турнікет отримує FULL) і розсиланням кількості відвідувачів усім клієнтам-табло.
3. Високий рівень. Створити систему обліку відвідувачів кількох залів музею: програми-турнікети надсилають TCP-серверу IN або OUT з назвою залу, сервер веде погодинну статистику у файлі CSV і відновлює лічильники після перезапуску, а клієнт Windows Forms показує заповненість залів індикаторами ProgressBar.
Варіант 29. Мережний диктант
1. Початковий рівень. Створити TCP-сервер, який надсилає клієнту речення, отримує введений текст і відповідає, чи збігається він з оригіналом, та консольний клієнт.
2. Базовий рівень. Створити TCP-сервер диктанту для кількох учнів, який надсилає всім по черзі 5 речень з файлу, приймає введені учнями відповіді протягом заданого часу, рахує помилки за словами й наприкінці надсилає кожному його оцінку, та консольний клієнт учня.
3. Високий рівень. Створити сервер диктанту з вибором тексту з кількох файлів, збереженням відповідей учнів у файл JSON, звітом для вчителя з кількістю помилок кожного учня, та клієнт Windows Forms з таймером і полем введення.
Варіант 30. Сервер лотереї
1. Початковий рівень. Створити TCP-сервер лотереї, який на запит клієнта видає квиток із шести випадкових чисел від 1 до 49, та консольний клієнт, що виводить номер і числа квитка.
2. Базовий рівень. Створити TCP-сервер лотереї, у якому клієнти купують квитки з власними шістьма числами від 1 до 49, а оператор командою DRAW проводить розіграш; сервер розсилає виграшні числа й повідомляє кожному клієнту кількість збігів його квитків; консольний клієнт купує квитки й виводить результат.
3. Високий рівень. Створити сервер лотереї з кількома тиражами, перевіркою унікальності квитків, таблицею виплат за кількість збігів, збереженням тиражів у файл JSON і відтворюваним розіграшем за зерном з аргументу --seed, та клієнт з командами buy, check, --help.
Порядок виконання та захисту роботи
- Опрацювати теоретичні відомості та приклади розв’язання завдань; запустити сервер і клієнт прикладу 1 у двох вікнах терміналу.
- Описати прикладний протокол свого варіанта: спосіб виділення повідомлень, команди, відповіді та коди помилок, обмеження розмірів; обрати вільний порт (перевірити командою
Get-NetTCPConnection). - Створити рішення з проєктами сервера й клієнта, налаштувати одночасний запуск (Configure Startup Projects…).
- Реалізувати сервер і клієнт відповідно до обраного рівня складності з асинхронними методами, обробкою
SocketExceptionтаIOExceptionі коректним завершенням. - Перевірити роботу з кількома клієнтами, некоректними командами, розривом з’єднання (закрити вікно клієнта) і зупинкою сервера; переглянути з’єднання командою
Get-NetTCPConnection. - Продемонструвати роботу програм викладачеві, пояснити протокол і програмний код та відповісти на контрольні питання.