Клієнт-сервер Delphi на основі сокетів

Сьогодні залишається досить актуальною тема в сфері інформаційних технологій, присвячена розробці та розгортання архітектури «клієнт - сервер». Пов`язано це з тим, що інформаційні системи різних масштабів знаходять все більше застосування в різних областях. Крім того, структура якої бази даних створюється за певними параметрами, причому таким чином, що працювати з нею в штатному режимі можливе тільки з застосуванням спеціальних додатків. Тому реалізація архітектури «клієнт - сервер» - дуже важливе завдання, що виникає перед відділами інформаційних технологій на різних об`єктах, успішне вирішення якої дозволить працювати підприємству оптимально і безперебійно.

Сервер на основі сокетів

Сервер, що працює по протоколу сокетов, дозволяє одночасно обробляти запити від великої кількості користувачів. При цьому адміністратор в будь-який момент часу може внести корективи в налаштування, щоб ввести обмеження на кількість одночасно обслуговуваних користувачів. За замовчуванням цей параметр не містить обмежень.

Після підключення клієнта до сервера відкривається окремий канал з сокетом, по якому відбувається обмін даними. Однак найбільш оптимальним і безпечним є розгортання для кожного нового підключення спеціального окремого процесу.

Схема роботи архітектури «Клієнт - сервер»

Розглянемо більш докладно схему реалізації архітектури, послідовно аналізуючи часто використовувані визначення:



1. Властивості ServerType і Port. Для того щоб користувач мав можливість підключитися до сервера, важливо гарантувати, щоб порт, використовуваний як сервером, так і клієнтом збігався. Саме призначення даного параметра проводиться у властивості Port. Тип підключення визначається параметром ServerType.

2. Процес відкриття сокета. Для початку сесії «клієнт - сервер» важливо відкрити сокет і порт. Використовується властивість Listen.

3. Далі проводиться обмін даними з користувачем. При завершенні роботи відбувається відключення клієнта. При відповідній команді системного адміністратора сервер завершує свою роботу, перериваючи всі встановлені з`єднання і припиняючи процес очікування нових підключень.



Застосування TServerSocket в додатках на мові Delphi «Клієнт - сервер»

Для відправлення та прийому інформації від користувача використовуються події OnClientWrite і OnClientRead. При цьому взаємодіяти з користувачем можна через такий параметр, як ClientSocket. При роботі часто використовуються такі методи і властивості:

- кількість підключених в поточний момент користувачів-

- число активних процесів-

- число вільних процесів-

- порт, хост-ім`я і локальний IP-адреса-

- розблокування і блокування сокета.

На закінчення звернемо увагу на часто вживане особливу властивість - Data. Ця властивість застосовується в наступній ситуації. Як правило, сервер використовується для обслуговування великої кількості користувачів, а значить, є необхідність зберігати відомості про кожного клієнта, причому цю інформацію потрібно прив`язати до конкретного сокету. У подібних ситуаціях використання ручної прив`язки вельми незручно, а тому широко застосовується властивість Data. Проте важливо пам`ятати, що Data - це покажчик, а тому важливо обов`язково перевірити, чи виконані всі правила роботи з покажчиками (вказівка типу, виділення пам`яті і т.д.)

Документація

На сьогоднішній день літератури з розробки додатків «клієнт - сервер» Delphi, пов`язаної з розробкою і застосуванням сокетов, представлено дуже мало. Тому для детального вивчення даного аспекту можна звернутися до документації по Linux і Unix-систем, тому в ній досить докладно розглядається технологія розгортання додатків із застосуванням сокетов, однак, як правило, на мовах Perl або С ++.




» » Клієнт-сервер Delphi на основі сокетів