Клієнт-сервер delphi на основі сокетів
Відео: [DELPHI] ClientSocket / ServerSocket.
Сьогодні залишається досить актуальною тема в сфері інформаційних технологій, присвячена розробці та розгортання архітектури «клієнт - сервер». Пов`язано це з тим, що інформаційні системи різних масштабів знаходять все більше застосування в різних областях. Крім того, структура будь-якої бази даних створюється за певними параметрами, причому таким чином, що працювати з нею в штатному режимі можливо тільки із застосуванням спеціальних додатків. Тому реалізація архітектури «клієнт - сервер» - дуже важливе завдання, що виникає перед відділами інформаційних технологій на різних об`єктах, успішне вирішення якої дозволить працювати підприємству оптимально і безперебійно.
Сервер на основі сокетів
Сервер, що працює по протоколу сокетів, дозволяє одночасно обробляти запити від великої кількості користувачів. При цьому адміністратор в будь-який момент часу може внести корективи в налаштування, щоб ввести обмеження на кількість одночасно обслуговуваних користувачів. За замовчуванням цей параметр не містить обмежень.
Після підключення клієнта до сервера відкривається окремий канал з сокетом, за яким відбувається обмін даними. Однак найбільш оптимальним і безпечним є розгортання для кожного нового підключення спеціального окремого процесу.
Схема роботи архітектури «Клієнт - сервер»
Розглянемо більш докладно схему реалізації архітектури, послідовно аналізуючи часто використовувані визначення:
Відео: Server Socket і ClientSocket в Delphi7
1. Властивості ServerType і Port. Для того щоб користувач мав можливість підключитися до сервера, важливо гарантувати, щоб порт, який використовується як сервером, так і клієнтом збігався. Саме призначення даного параметра проводиться у властивості Port. Тип підключення визначається параметром ServerType.
2. Процес відкриття сокета. Для початку сесії «клієнт - сервер» важливо відкрити сокет і порт. Використовується властивість Listen.
3. Далі проводиться обмін даними з користувачем. При завершенні роботи відбувається відключення клієнта. при відповідній команді системного адміністратора сервер завершує свою роботу, перериваючи всі встановлені з`єднання і припиняючи процес очікування нових підключень.
Застосування TServerSocket в додатках на мові Delphi «Клієнт - сервер»
Для відправлення та прийому інформації від користувача використовуються події OnClientWrite і OnClientRead. При цьому взаємодіяти з користувачем можна через такий параметр, як ClientSocket. При роботі часто використовуються наступні методи і властивості:
- кількість підключених в потрібний момент користувач;
- число активних процесів;
- число вільних процесів;
- порт, хост-ім`я і локальний IP-адреса;
- розблокування і блокування сокета.
На закінчення звернемо увагу на часто застосовується особлива властивість - Data. Це властивість застосовується в наступній ситуації. Як правило, сервер використовується для обслуговування великої кількості користувачів, а значить, є необхідність зберігати відомості про кожного клієнта, причому цю інформацію потрібно прив`язати до конкретного сокету. У подібних ситуаціях використання ручної прив`язки вельми незручно, а тому широко застосовується властивість Data. Однак важливо пам`ятати, що Data - це покажчик, а тому важливо обов`язково перевірити, чи виконані всі правила роботи з покажчиками (вказівка типу, виділення пам`яті і т.д.)
документація
На сьогоднішній день літератури з розробки додатків «клієнт - сервер» Delphi, пов`язаної з розробкою та застосуванням сокетов, представлено дуже мало. Тому для детального вивчення даного аспекту можна звернутися до документації по Linux і Unix-систем, тому що в ній досить докладно розглядається технологія розгортання додатків із застосуванням сокетов, однак, як правило, на мовах Perl або С ++.