Робота з tclientsocket і tserversocket на прикладі проекту mapwindow gis, блог delphi-програміста

Робота з tclientsocket і tserversocket на прикладі проекту mapwindow gis, блог delphi-програміста
Днями, в свій проект MapWindows GIS в Delphi я додав мережеву підтримку. Тобто створив окремий сервер і окремий клієнт. Сенс полягає в тому, що працює сервер додатки, користувач запускається клієнт і в користувач вводить запит: Москва Тверська 6. Потім сервер обробляє запит, отримує результати пошуку з Яндекс.Карт і відправляє отриману картинку клієнту, потім вже в клієнті в компоненті TMap відображається частина даної карти, яка відповідає запиту користувача. В результаті користувач може її масштабувати, зберігати і так далі.

Тому в даній статті я хочу розповісти, як я реалізовував клієнта і сервер. Це я робив за допомогою TClientSocket і TServerSocket, в даній статті ми і розглянемо докладно ті методи, які використовував я у себе, в своєму проекті.

Для початку давайте подивимося, як ці компоненти можна встановити собі в IDE. Якщо Ви використовуєте IDE Delphi 7, то в ній за замовчуванням дані компоненти присутні, але вони, на жаль, не встановлені, але це не проблема. Нам досить відкрити Delphi і встановити.

Для цього виконаємо команду Component-Install Packages ... і у вікні необхідно натиснути на кнопку Add. Після цього необхідно вказати шлях до файлу dclsockets70.bpl, який зазвичай, за замовчуванням, знаходиться в папці BIN. Після цього необхідно натиснути на кнопку Ок. Все, компоненти у Вас повинні з'явитися на вкладці Internet (TClientSocket і TServerSocket).

У проекті MapWindow GIS. я починав всю роботу, з мінімальною розробці сервера. Для початку встановив компонент TServerSocket на форму. І після натискання на кнопку Запустити сервер задав початкові настройки, для його ініціалізації:

Для ініціалізації сервера на своїй машині, я задавав лише тільки вільний порт (яка не зайнятий іншими додатками) і активував його.

В принципі і все, для роботи мені досить було того, щоб сервер був запущений і я зміг обробляти запити клієнтів, які вони посилають.

Для того, щоб мені отримати список клієнтів, які підключаються до сервера і подальшої роботи з ними, я встановив компонент TCheckListBox на форму і на подія OnclientConnect компонента TServerSocket, написав наступний код: