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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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