logo
Программирование в среде Delphy / Программирование в среде Delphi

25.5. Сокеты

Сокеты отличаются от каналов тем, что поддерживают работу всех протоколов глобальной сети Internet. Общепринятой и стандартизованной на международном уровне является семиуровневая модель структуры протоколов связи под названием модель взаимодействия открытых систем (Open System Interface – OSI). На каждом из уровней, от первого – физического до высших уровней, решается свой круг задач и используются свои инструменты. Роль каждого уровня – предоставлять определенный интерфейс протоколам следующего уровня. Перечислим эти уровни:

1) физический – на нем происходят преобразование бит в электромагнитный сигнал при передаче данных и обратное преобразование при приеме. Здесь все реализуется аппаратно, программные интерфейсы и протоколы отсутствуют;

2) канальный – обеспечивает связь между физическими устройствами в рамках одной сети;

3) сетевой – это уровень межсетевого общения;

4) транспортный – это уровень поддержки интернет–протоколов (IP). Основу этих протоколов составляют TCP (Transmission Control Protocol) и UDP (User Datagram Protocol);

5) cессионный – обеспечивает управление диалогом двух взаимодействующих сторон;

6) представлений – на нем решается задача приведения форматов данных к форматам, понятным приложениям высшего уровня.

7) приложений – на нем приложения обмениваются данными по глобальной сети.

Сокеты находятся над транспортным уровнем, а над ними – протоколы сеансового уровня, которые ориентированы на решение конкретных задач или сервисов Интернета. Например:

• FTP – сервис передачи файлов,

• HTTP – сервис передачи гипертекстовых страничек (Интернет–страниц),

• SMTP и POP3 – сервисы электронной почты и т.д.

Сокеты позволяют, не вдаваясь в детали передачи информации, обеспечивать решение большого круга задач, используя Интернет. Сокеты представляют собой модель одного конца сетевого соединения.

В Delphi имеется огромный выбор средств для работы на уровне сокетов. Во–первых, можно впрямую использовать Windows API. Все процедуры и функции для этого даны в модуле WinSock.pas. Исторически первыми компонентами для работы с сокетами были TClientSocket и TServerSocket. Их описание дано в модуле ScktComp.pas. Но в последних версиях Delphi появились более универсальные компоненты TTCPClient, TTCPServer и TUDPSocket (модуль Sockets.pas). Одновременно в палитре компонентов Delphi появились целые страницы компонентов Indy (Internet Direct).

Механизм соединения при помощи сокетов следующий. На клиентском конце создается сокет, для инициализации связи ему задается путь к серверному сокету, с которым мы хотим установить соединение. В сетях TCP/IP путь задается двумя параметрами: адресом или равноценным ему именем хоста и номером порта. Хост – это система, в которой запущено приложение, содержащее сокет. Адрес хоста задается в виде четырех цифр в диапазоне от 0 до 255, разделенных точками. Вместо адреса можно задать имя хоста согласно правилам UNC (Universal Naming Convention), например http://bsuir.unibel.by. Соответствие адреса и имени хоста поддерживается специальным сервисом DNS (Domain Naming System). У компонента клиента адрес сервера задается двумя свойствами: Address и Port. На стороне сервера запускается свой сокет, который прослушивает (listening) состояние порта связи. После получения запроса от клиента устанавливается связь. Одновременно на сервере создается новый сокет для продолжения прослушивания.

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