атне повідомлення # NЗапрос імені від сервера # D lt; ім'я gt; Відключення адміністратором # A lt; повідомлення gt; Повідомлення від адміністратора
Особливості:
· Так само як і у сервера у клієнта є тимчасова папка, яка очищається після закриття програми.
· При відправки клієнтом файлу спочатку відправляється команда для створення файлу, потім створюється файл для відправки (файл записується в змінну), і після відправляється на сервер.
· Повідомлення від адміністратора з'являється не в загальному чаті а в спливаючому вікні.
1.4 Взаємодія клієнта і сервера
Припустимо що сервер запушений і нормально функціонує, розглянемо типові ситуації роботи в мережі:
1. Підключення клієнта:
· Клієнт підключається до сервера знаючи його адресу і порт.
· Сервер виявивши нове з'єднання, відправляє на всі з'єднання рядок # N (Запит імені клієнта).
· Всі підключення клієнти в тому числі і щойно підключений, отримавши запит сервера відправляють на сервер рядок # Nімя , де ім'я це ім'я клієнта.
· Сервер отримавши такий рядок додає ім'я в список клієнтів.
2. Відключення клієнта:
Відключення може відбутися з різних причин: клієнт сам відключився, клієнта відключив адміністратор, через збій роботи сервера або клієнта.
· Відключившись клієнт просто перериває зв'язок з сервером.
· Сервер помітивши що хто то відключився, запрошувати у залишилися підключень їхні імена пославши рядок # N (Запит імені клієнта).
· Всі підключення клієнти, отримавши запит сервера відправляють на сервер рядок # Nімя , де ім'я це ім'я клієнта.
· Сервер отримавши такий рядок додає ім'я в список клієнтів.
Якщо ініціатива відключення виходить від адміністратора:
· Сервер посилає рядок # Dімя всім підключеним клієнтам , де ім'я це ім'я клієнта який повинен відключитися.
· Клієнт дізнавшись своє ім'я відключається від сервера
Якщо стався збій роботи сервера:
· Клієнт зрозумівши що сервер не відповідає, розриває з'єднання з неактивним сервером.
Якщо стався збій роботи клієнта, то процедура відключення нічим не відрізняється від звичайної.
3. Відправка загального повідомлення:
· Клієнт посилає на сервер рядок #M повідомлення , де повідомлення це текст який клієнт хоче щоб бачили всі учасники чату.
· Сервер отримавши цей рядок не зраджуючи її, просто розсилає її всім клієнтам включаючи відправника.
· Клієнти отримавши цей рядок відображають повідомлення в компонент відображення.
4. Відправка приватного повідомлення:
· Клієнт c ім'ям імя1 посилає на сервер рядок # Pімя1; імя2; повідомлення , де повідомлення це текст який клієнт хоче відправити клієнту з ім'ям імя2 , ; - це роздільник.
· Сервер отримавши цей рядок не зраджуючи її, просто розсилає її всім клієнтам включаючи відправника.
· Клієнт отримавши цей рядок, визначивши що він одержувач відображають повідомлення в компонент відображення, всі ж інші пропускають рядок.
5. Відправка Файлу:
· Клієнт посилає на сервер рядок # F ім'я файлу
· сервер створює файл з ім'ям ім'я файлу.
· Клієнт посилає файл.
· Клієнт посилає рядок # S ім'я файлу , що означає що клієнт хоче відправити файл c ім'ям ім'я файлу , який вже знаходиться на сервері всім іншим клієнтам.
· Сервер розсилає всім підключеним клієнтам рядок # F ім'я файлу .
· Клієнти створюють файл.
· Сервер посилає файл.
2. Програм...