Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сокеты_методичка.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
104.96 Кб
Скачать

КЛИЕНТ-СЕРВЕРНЫЕ ВЗАИМОДЕЙСТВИЯ ПОСРЕДСТВОМ СОКЕТОВ В РЕЖИМЕ TCP-СОЕДИНЕНИЯ

[Лабораторная работа №3]

Новиков С. П.

2012 г

СОДЕРЖАНИЕ

1 Цель работы 2

2 Выполнение и защита лабораторной работы 3

3 Необходимая информация 4

Сокеты 5

Принцип работы 5

Общая схема работы программы - сервера 5

Общая схема работы программы – клиента 5

4 Примеры (язык Си) 6

Программа – сервер 6

Программа – клиент 8

5 Задания на лабораторную работу 10

Полезные ссылки 14

1 Цель работы

Практическое освоение механизма сокетов. Построение TCP-соединений для межпроцессного взаимодействия программ Клиента и Сервера в модели "Клиент-сервер".

2 Выполнение и защита лабораторной работы

  1. Ознакомиться с заданием к лабораторной работе;

  2. Ознакомиться с понятиями сокета, моделей взаимодействия между процессами на основе сокетов, структурами данных и адресацией, используемых при работе с сокетами, основными шагами при организации взаимодействия процессов в сети в режиме TCP-соединения;

  3. Выбрать и изучить набор системных вызовов, обеспечивающих решение задачи;

  4. Для указанного варианта составить две программы: программу - сервер и программу - клиент, реализующие требуемые действия;

  5. Отладить и оттестировать составленную программу, используя инструментарий ОС;

  6. Защитить лабораторную работу, ответив на контрольные вопросы.

3 Необходимая информация

Существует две модели взаимодействия между процессами в сети: модель соединений с протоколом TCP (Transmission Control Protocol), и модель дейтаграмм с протоколом UDP (User Datagram Protocol). В данной лабораторной работе используется первая из названных моделей.

Сокеты

Со́кеты (англ. socket — углубление, гнездо, разъём) — название программного интерфейса для обеспечения обмена данными между процессами. Процессы при таком обмене могут исполняться как на одной ЭВМ, так и на различных ЭВМ, связанных между собой сетью. Сокет — абстрактный объект, представляющий конечную точку соединения.

Следует различать клиентские и серверные сокеты. Клиентские сокеты грубо можно сравнить с оконечными аппаратами телефонной сети, а серверные — с коммутаторами. Клиентское приложение (например, браузер) использует только клиентские сокеты, а серверное (например, веб-сервер, которому браузер посылает запросы) — как клиентские, так и серверные сокеты.

Интерфейс сокетов впервые появился в BSD Unix. Программный интерфейс сокетов описан в стандарте POSIX.1 и в той или иной мере поддерживается всеми современными операционными системами.

Принцип работы

Каждый процесс может создать слушающий сокет (серверный сокет) и привязать его к какому-нибудь порту операционной системы (в UNIX непривилегированные процессы не могут использовать порты меньше 1024). Слушающий процесс обычно находится в цикле ожидания, то есть просыпается при появлении нового соединения. При этом сохраняется возможность проверить наличие соединений на данный момент, установить тайм-аут для операции и т.д.

Каждый сокет имеет свой адрес. ОС семейства UNIX могут поддерживать много типов адресов, но обязательными являются INET-адрес и UNIX-адрес. Если привязать сокет к UNIX-адресу, то будет создан специальный файл (файл сокета) по заданному пути, через который смогут сообщаться любые локальные процессы путём чтения/записи из него (см. Доменный сокет Unix). Сокеты типа INET доступны из сети и требуют выделения номера порта.

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

Общая схема работы программы - сервера

  1. Ожидание подключения клиента;

  2. Установка соединения с клиентом;

  3. Отправка клиенту сообщения;

  4. Разрыв соединения и завершение программы.

Общая схема работы программы – клиента

  1. Подключение к серверу;

  2. Ожидание получения сообщения от сервера;

  3. Отображение полученного сообщения;

  4. Пользователю;

  5. Разрыв соединения с сервером.