Как сделать калькулятор в Delphi?

Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.

Как Delphi реализует многоплатформенную разработку?

Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...

Создание многопользовательских приложений на базе сокетов

Статьи » Интернет » Создание многопользовательских приложений на базе сокетов

Эта статья расскажет о сокетах и о принципах работы с ними. Из нее Вы узнаете, как создаются чаты реального времени.

Работая в сети Internet, мы очень часто встречаемся с разного рода многопользовательскими программами. Ими могут быть почтовые клиенты, чаты, форумы, FTP клиенты и т.п. Все эти приложения используют для своей работы разного рода протокола: FTP, POP, SMTP, HTTP, и т.д. Но базовым для них является единый протокол - TCP/IP.

Типичное же приложение TCP/IP построено на  клиент-серверной архитектуре. Примером приложения построенного на данной архитектуре, является чат реального времени. В этой статье мы попытаемся создать чат средствами Borland Delphi. Для этой цели нам необходимы компоненты TClientSocket и TServerSocket (рис. 1). Выбранные нами компоненты при работе с протоколом TCP/IP используют интерфейс сокетов. Но прежде чем перейти к разработке чата, разберем, что же такое сокеты.

 

(Рис. 1) Расположение компонентов TClienSocket и TServerSocket

Сокеты – это интерфейс прикладного программирования  для сетевых приложений TCP/IP. Интерфейс сокетов был создан в восьмидесятых годах для операционной системы UNIX. Позднее интерфейс сокетов был перенесен в Microsoft Windows. Сокеты до сих пор используются в приложениях для сетей TCP/IP. В переводе с английского "sockets" – гнезда, т.е. сетевые приложения используют сокеты, как виртуальные разъемы для обмена данными между собой. Сокеты бывают трех видов: клиентские, слушающие и серверные.

Клиентские сокеты устанавливают связь с сервером и обмениваются с ним данными. Клиентский сокет включен в компонент TClientSocket. Слушающий сокет принимает запрос на соединение от клиентского сокета, и соединяет сервер с клиентом. Слушающий сокет содержится в компоненте TServerSocket. Серверный сокет обменивается данными с клиентом по уже установленному (слушающим сокетом) соединению.

Теперь вернемся к компонентам TClientSocket и TServerSocket. Для того чтобы клиент мог установить соединение с сервером, ему необходимо указать его адрес (IP) и номер порта, через который будет происходить обмен данными.

         Перейдем к примеру. У нас будет два приложения: сервер и клиент. Чат будет работать по принципу - один сервер и множество клиентов. Клиент будет посылать сообщение на сервер, а сервер будет рассылать это сообщение другим клиентам, т.е. клиенты будут обмениваться сообщения между собой через сервер. Для написания чата, мы создадим два проекта: сервер и клиент.

Создание сервера

 Создайте форму и добавьте на нее компоненты, показаные на рис.2.

 


(Рис 2) Сервер

         В процедуре FormCreate задается значение порта, через  который будет происходить обмен данными. Затем TServerSocket начинает свою работу. В обработчике кнопки «Выход» происходит отключение сервера. При завершении работы программы, очень важно отключать TServerSocket и закрывать соединение. Далее в обработчике события OnClienRead, компонента TServerSocket происходит обработка данных полученных от клиента. Событие OnClienRead генерируется при получении данных от клиента. Это все, что нужно учитывать при разработке клиента. Откомпилируйте созданное нами приложение.

Создание клиента

Создайте форму и добавьте на нее компоненты, показанные на рисунке 3.


(Рис. 3) Клиент

 

Из листинга видно, что при нажатии на кнопку «Подключение» заполняются свойства адрес и порт, компонента TClientSocket. Затем происходит подключение. В процедуре ClientSocket1Read сообщение, полученное от сервера, добавляется в ListBox1. И самое главное – это обработчик кнопки «Послать сообщение». В этой процедуре сообщение проверяется и отправляется на сервер. При этом вызывается метод ClientSocket1.Socket.SendText. Остальные процедуры очень просты. Клиент готов к работе. Откомпилируйте его.

Теперь, когда и сервер и клиент готовы, запустите сервер. Затем запустите несколько экземпляров клиента, введите в каждом номер порта и IP-адрес. После этого нажмите на каждом клиенте кнопку  «Подключение». Теперь клиенты могут обмениваться между собой сообщениями.

Как видите, все не так уж и сложно. Используя мои предыдущие статьи, Вы сможете расширить функциональность созданного нами чата и добавить в него функции обмена файлами. Я надеюсь, что эта статья помогла Вам познакомиться с сокетами и принципами их работы.

Другое по теме:

Категории

Статьи

Советы

Copyright © 2024 - All Rights Reserved - www.delphirus.com