Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
prakt-Storozhok.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.98 Mб
Скачать

1.2. Компоненты Delphi tcpserver и tcpcl1ent

1.2.1. Установление соединения

Компоненты TServcrSocket и TCiientSocket находятся в Delphi 7 на странице Internet Палитры компонентов. Отличия от аналогов из других упомянутых реализаций у них невелики и сводятся в основном к использованию других названий для аналогичных свойств и методов.

Механизм соединения при помощи сокетов таков. На одной стороне создается клиентский сокет. Для инициализации связи ему нужно задать путь к серверному сокету, с которым предстоит установить соединение.

Путь в сетях TCP/IP задается двумя параметрами: адресом или равноценным ему именем хоста (или просто говорят «хостом») и номером порта. Хост в этом случае - это система, в которой запущено приложение, со­держащее сокет. Имя хоста, как правило, символьная строка, поставленная в соответствие адресу и записанная по правилам UNC (Universal Naming Convention), например http://www.microsoft.com. Взаимное соответствие между именами и адресами может устанавливаться по-разному, в зависимости от масштаба сети и применяемой ОС. В Internet существует система имен доменов (Domain Naming System, DNS) - протокол, который предназначен для специальных серверов, хранящих и поддерживающих таблицы соответствия между символьным именем и адресом. Мнемоническое имя легче запоминается, но соединение по адресу проще и надежнее, так как не нужно обращаться к DNS за дополнительной информацией.

Выполняемая работа начинается с отладки и клиентской, и серверной частей приложения на одной и той же машине. В этом случае можно указать, что сервер находится на том же компьютере, и связать сокеты че­тырьмя способами:

  • указанием сетевого имени вашего компьютера (узнать его можно из оснастки Сеть Панели управления);

  • указанием IP-адреса вашего компьютера (узнать его можно в свойствах) протокола TCP/IP (на машине должен быть установлен этот протокол и наличествовать постоянный IP-адрес);

  • указанием предопределенного имени localhost, всегда соответствующего данному хосту (т. е. адресат в этом случае совпадает с отправи­телем);

  • заданием IP-адреса 127.0.0.1 (также всегда указывающего на дан­ный хост).

Номер порта - простое средство для поддержания одновременно нескольких соединений между двумя хостами.

Задание адреса на клиентской стороне у компонента TClientsocket происходит посредством свойств Address и Port.

С другой, вступающей в связь, стороны запускается серверный сокет Первоначально он находится в состоянии прослушивания (listening), то есть ожидания связи по заданному порту. После получения запроса клиента устанавливается связь. Но в то же время создается новый сокет для продолжения прослушивания.

1.2.2. Синхронизация сокетов

Очень важной характеристикой сокетов является их тип - блокирующий (синхронный) или неблокирующий (асинхронный). По существу работа с сокетами - не что иное, как операции ввода-вывода, которые также могут быть синхронными и асинхронными (отложенными). В первом случае при вызове функции ввода-вывода приложение блокируется до ее окончания. Во втором инициируется ввод-вывод, и выполнение приложения сразу же продолжается. Окончание ввода-вывода будет «ознаменовано» возникновением некоторого события в системе. В библиотеке Winsock 2.0 поддерживаются оба типа операций с сокетами. Соответственно, в компонентах Delphi также можно установить нужный тип в свойствах ServerType и ClientType.

Специфика компонентов TServerSocket и TCIientSockel в том, что они являются «двухэтажными» надстройками над API сокетов. И у того, и у другого имеется свойство:

property Socket: TClientWinsocket; - у компонента TClientSocket,

property Socket: TServerWinsockel; - у компонента TserverSocket.

Это свойство представляет собой класс - собственно оболочку сокета со всеми функциями, поддерживающими установку соединения, чтение и запись. Разделение труда между ними таково - на уровне TServerSocket (TClientsocket) сосредоточены основные опубликованные (published) свойства и события, обработку которых можно запрограммировать. На уровне TServerWinsocket (TClientWinsocket) следует искать методы, в том числе чтения из сокета и записи в него.

Рассмотрим компоненты и классы в такой последовательности: сначала серверную сторону, а затем - клиентскую.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]