Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций по дисциплине Объектно-ориентирован...doc
Скачиваний:
33
Добавлен:
01.07.2025
Размер:
14 Мб
Скачать
☆

3. Обмен данными между клиентом и сервером

3.1. Построение приложения-сервера

Теперь перейдем к рассмотрению обмена данными между клиентом и сервером. Данные, содержащиеся на сервере, которые могут быть переданы клиентам, обеспечивает компонент DdeServerltem. Основные свойства этого компонента — Lines — набор строк, представляющий собой передаваемую информацию, и ServerConv — имя компонента DdeServerConv, т.е. имя темы, к которой относится данная информация. Если свойство ServerConv не установлено, то считается, что имя темы — заголовок (Caption) формы приложения-сервера.

Свойство Text компонента DdeServerltem автоматически устанавливается равным первой строке свойства Lines. Но если вы устанавливаете свойство Text непосредственно, это значение заносится в первую строку Lines, а остальные строки очищаются.

Компонент DdeServerltem имеет метод CopyToClipboard. При выполнении этого метода в буфер обмена Clipboard заносится содержимое хранимой в компоненте информации в специальном формате, который содержит информацию о контакте: имена сервера и темы.

Пример: Построение простых серверов. Откройте новое приложение и выполните следующие операции:

1. Перенесите на форму компонент DdeServerConv и установите его имя Name равным Topicl. Это будет названием первой темы.

2. Перенесите на форму компонент DdeServerltem и установите его имя Name равным Items1, а свойство ServerConv равным Topicl. Этот компонент будет хранить содержание первой темы. В свойстве Strings задайте какой-нибудь текст, например:

строка 1 темы Topicl сервера Server

строка 2 темы Topicl сервера Server

Этот текст впоследствии на стороне клиента позволит понять, с каким сервером и по какой теме установлен контакт.

3. Перенесите на форму компонент Edit с именем Editl и задайте его свойство Text равным тексту первой строки свойства DdeServerltem.Strings. Этот компонент в дальнейшем потребуется для того, чтобы видеть, как можно наблюдать со стороны клиента изменения информации на сервере. Для этого в обработчик события OnChange компонента Editl вставьте оператор

Items1.Text:=Editl.Text;

переносящий текст из окна редактирования в компонент Items1.

4. Повторите пункты 1 и 2, перенеся на форму еще одну пару компонентов DdeServerConv и DdeServerltem с именами Topic2 и Items2. Они будут отражать вторую тему сервера. Текст темы можете сделать тем же, что и в компоненте Items, заменив в нем слова «Topic1» на «Topic2».

5. Добавьте на форму кнопку Button, в обработчик щелчка на которой вставьте оператор

Items1.CopyToClipboard;

Эта кнопка будет заносить содержание темы в буфер обмена Clipboard. На этом проектирование сервера закончено.

6. Сохраните проект, присвоив ему имя Server. Скомпилируйте проект, чтобы создать выполняемый модуль, и проверьте, что все в порядке.

7. Сохраните этот проект еще один раз под именем Server. Таким образом, у вас будет два сервера с разными именами, чтобы можно было проверить связь клиента с разными серверами. Замените в текстах компонентов Items1 и Items2 этого сервера слова «Server» на «Server1». Создайте выполняемый модуль второго сервера.