Корпоративные системы Лекция 3. Реализация архитектуры «Клиент- сервер» с использованием механизма сокетов.

Презентация:



Advertisements
Похожие презентации
TECHNOLOGIES Программирование Socket'ов Socket (гнездо, разъем) - абстрактное программное понятие, используемое для обозначения в прикладной.
Advertisements

СОКЕТЫ. СОКЕТ Сокет – программный интерфейс для обеспечения обмена данными между процессами. Впервые socket API появилась в BSD Unix. Описан в POSIX В.
Взаимодействие процессов: сокеты.
3. Механизм сокетов 3.1. Общие концепции 3.2. Интерфейсные функции для работы с сокетом Создание сокета Связывание и установление соединения.
Механизм сокетов Средства межпроцессного взаимодействия ОС Unix, представленные в системе IPС, решают проблему взаимодействия процессов, выполняющихся.
СЕТЕВОЕ ПРОГРАММИРОВАНИЕ В LINUX. Со́кеты Со́кеты (англ. socket углубление, гнездо, разъём) название программного интерфейса для обеспечения обмена данными.
ПАРАМЕТРЫ СОКЕТА Методическое пособие по дисциплине «Программное обеспечение компьютерных сетей и информационных систем»
Сокеты в Perl и PHP. Сокеты в Perl Сокеты являются «конечными пунктами» в процессе обмена данными. Одни типы сокетов обеспечивают надежный обмен данными,
Сети ЭВМ и телекоммуникации. Состояния сеанса TCP CLOSED Начальное состояние узла LISTEN Сервер ожидает запросов установления соединения от клиента SYN-SENT.
СОКЕТЫ -2 РАБОТА СЕРВЕРА Стандартная схема работы плоха тем, что одновременно обслуживается только один клиент ! Это приводит к задержкам в работе сети.
Сокеты Сети и системы телекоммуникаций Созыкин А.В.
СОЗДАНИЕ И ИНИЦИАЛИЗАЦИЯ СОКЕТА Методическое пособие по дисциплине «Программное обеспечение компьютерных сетей и информационных систем»
Низкоуровневые операции в ИС. Сокеты в C#. Понятие сокета Если требуется получить доступ к сетевым операциям низкого уровня, в программе следует использовать.
Стек протоколов TCP/IP сетевые адаптеры, модемы, кабельная система; формирование пакетов, целостность данных целостность пакетов, потоковая передача Межузловой.
1 Архитектура вычислительных систем. Лекция 10. Ловецкий К.П. Москва, ноябрь 2011 Взаимодействие по сети. Сокеты.
Петрозаводский госуниверситет, А. В. Соловьев, 2007СЕТЕВЫЕ ТЕХНОЛОГИИ Технология клиент-сервер Архитектура распределённой вычислительной системы, в которой.
Интерфейс сокетов. Интерфейс прикладной программы (API) представляет собой просто набор функций (интерфейс), использующийся программистами для разработки.
Лекция 6 Множественное распараллеливание на Linux кластере с помощью библиотеки MPI 1. Компиляция и запуск программы на кластере. 2. SIMD модель параллельного.
Тема 11 Транспортный уровень сети Internet Презентацию лекций разработал доцент кафедры оптимизации систем управления Томского политехнического университета.
Введение в параллельные вычисления. Технология программирования MPI (день второй) Антонов Александр Сергеевич, к.ф.-м.н., н.с. лаборатории Параллельных.
Транксрипт:

Корпоративные системы Лекция 3. Реализация архитектуры «Клиент- сервер» с использованием механизма сокетов

Использование сокетов (Sockets)

Использование сокетов в режиме установления соединения

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

Создание сокета int socket (domain, type, protocol) int domain; int type; int protocol; domain задает используемый для взаимодействия набор протоколов: AF_INET – протокол TCP/IP; AF_UNIX – для работы в среде UNIX type задает режим взаимодействия: SOCK_STREAM - с установлением соединения; SOCK_DGRAM - без установления соединения. SOCK_RAW – доступ к протоколам низкого уровня protocol задает конкретный протокол транспортного уровня (из нескольких возможных в стеке протоколов). Если этот аргумент задан равным 0, то будет использован протокол "по умолчанию" (TCP для SOCK_STREAM и UDP для SOCK_DGRAM при использовании комплекта протоколов TCP/IP). Возвращаемое значение: При удачном завершении своей работы данная функция возвращает дескриптор socket'а - целое неотрицательное число, однозначно его идентифицирующее. При обнаружении ошибки в ходе своей работы функция возвращает число "-1".

Связывание сокета int bind (s, addr, addrlen) int s; struct sockaddr *addr; int addrlen; S задает дескриптор связываемого сокета addr указывает на структуру данных, содержащую локальный адрес, приписываемый сокету. Для TCP/IP такой структурой является: struct sockaddr_in { short sin_family; // используемый формат адреса(AF_INET) u_short sin_port; // номер порта struct in_addr sin_addr; // IP-адрес узла char sin_zero[8]; // не используется }; addrlen - размер структуры в байтах Возвращаемое значение: В случае успеха bind возвращает 0, в противном случае - "-1".

Установка соединения int connect (s, addr, addrlen) int s; struct sockaddr_in *addr; int addrlen; S задает дескриптор сокета (д.б. заранее обеспечен адресом с помощью вызова bind) addr указатель на структуру данных sockaddr_in, которая описывает параметры сокета программы-сервера. Для этого можно пользоваться функцией gethostbyname() struct hostent *gethostbyname (name) char *name; name – доменное имя узла сети struct hostent – структура имеющая следующий вид struct hostent { char *h_name; // Основное имя узла char **h_aliases; // Список дополнительных имен int h_addrtype; // для TCP/IP – AF_INET int h_lenght; // Длина адреса узла char *h_addr; // Указатель на область памяти, сод. }; // имя адреса узла addrlen - размер структуры в байтах Возвращаемое значение: При успешном выполнении запроса системный вызов connect возвращает 0, в противном случае - "-1"

Отправка данных int send (s, buf, len) int s; char *buf; int len; int flags; S задает дескриптор сокета buf - указатель на область памяти, содержащую передаваемые данные len - размер структуры в байтах flags - модифицирует исполнение системного вызова send, если равно 0, то вызов полностью аналогичен системному вызову write. Возвращаемое значение: При успешном завершении send возвращает количество переданных из области, указанной аргументом buf, байт данных. Если канал данных, определяемый дескриптором s, оказывается "переполненным", то send переводит программу в состояние ожидания до момента его освобождения.

Чтение данных int recv (s, buf, len) int s; char *buf; int len; int flags; S задает дескриптор сокета buf - указатель на область памяти, содержащую передаваемые данные len - размер структуры в байтах flags - модифицирует исполнение системного вызова recv, если равно 0, то вызов полностью аналогичен системному вызову read. Возвращаемое значение: При успешном завершении recv возвращает количество принятых в область, указанную аргументом buf, байт данных. Если канал данных, определяемый дескриптором s, оказывается "пустым", то recv переводит программу в состояние ожидания до момента появления в нем данных.

Закрытие соединения Нормальное завершение работы: int close (s) int s; S задает дескриптор сокета Возвращаемое значение: При успешном завершении 0, иначе -1 Экстренное завершение работы: int shutdown (s, how) int s; int how; S задает дескриптор сокета how задает действия, выполняемые при очистке системных буферов сокета 0 - сбросить и далее не принимать данные для чтения из сокета; 1 - сбросить и далее не отправлять данные для посылки через сокет; 2 - сбросить все данные, передаваемые через сокет в любом направлении. Возвращаемое значение: При успешном завершении 0, иначе -1

Классы для работы с сокетами от Borland Компонент TServerSocket (закладка Internet) Компонент TClientSocket (закладка Internet)

Компонент ТServerSocket СвойстваМетодыСобытия Socket ServerType ThreadCacheSize Active Port Service Open Close OnClientConnect OnClientDisconnect OnClientError OnClientRead OnClientWrite OnGetThread OnThreadStart OnThreadEnd OnAccept OnListen

TServerSocket.Socket ActiveConnections (Integer) - количество подключенных клиентов; ActiveThreads (Integеr) - количество работающих процессов; Connections (array) - массив, состоящий из отдельных классов TClientWinSocket для каждого подключенного клиента. Например, такая команда: ServerSocket1.Socket.Connections[0].SendText('Hello!'); отсылает первому подключенному клиенту сообщение 'Hello!'. Команды для работы с элементами этого массива - также (Send/Receive)(Text,Buffer, Stream); IdleThreads (Integer) - количество свободных процессов. Такие процессы кэшируются сервером (см. ThreadCacheSize); LocalAddress, LocalHost, LocalPort - соответственно - локальный IP- адрес, хост-имя, порт; RemoteAddress, RemoteHost, RemotePort - соответственно - удаленный IP-адрес, хост-имя, порт; Методы Lock и UnLock - соответственно, блокировка и разблокировка сокета.