
Вопрос 2. Создание сокета.
Сокет предназначен для хранения адреса и порта адресата. Существует процедура generic socket.
Интерфейс сокетов
Для хранения информации об адресе и порте адресата существуют стандартные структуры, например структура generic socket:
#include <netinet/in.h>
struct sockaddr_in{
sa_family_r sin_family; /* семейство адресов */
in_port_t sin_port; /* номер порта */
struct in_addr sin_addr; /* IP-адреса */
unsigned char sin_zero[8]; /* Поле выравнивания */
}
Создание сокетов
При любых моделях связи (а есть их 2: с установкой и без установки) клиент и сервер должны создать абонентские точки (в RFC они называются transport end point, они же - сокеты), которые являются дескрипторами, используемыми для установки связи между процессами в сети. Они создаются при помощи системного вызова socket. Системные вызовы отличаются от обычных подпрограмм тем, что они хранятся не в библиотеках, а в ядре операционной системы. Ядро ОС Unix постоянно резидентно в оперативной памяти (всегда можно оперативно обратиться).
id=open(...)
read(...)
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
1) Параметр domain определяет коммуникационный домен, в котором будет использоваться сокет. Например, значение AF_INET этого параметра определяет, что будет использован домен Internet (т.е. процессы будут взаимодействовать через Интернет). Значение AF_UNIX - домен, который используется, если процессы находятся на одном и том же компьютере.
2) Параметр type - это тип создаваемого сокета. Имеет два значения - это соответственно SOCK_STREAM и SOCK_DGRAM. SOCK_STREAM указывается при создании сокета для работы в режиме виртуальных соединений (режим с установкой соединений), SOCK_DGRAM - для работы в режиме передачи дейтаграмм.
3) Параметр protocol определяет используемый протокол. Этот параметр обычно задаётся равным нулю. При этом по умолчанию сокет типа SOCK_STREAM будет использовать протокол TCP, а SOCK_DGRAM - протокол UDP. Оба данных протокола являются стандартными протоколами UNIX, поэтому виртуальное соединение часто называют tcp-соединением, а пересылку или передачау дейтаграмм - работу с udp-сокетами. Системный вызов socket() обычно возвращает неотрицательное целое число (если -1 - это ошибка), которое является дескриптором файла сокета, что позволяет считать механизм сокетов разновидностью обобщённого файлового ввода-вывода Unix.
Билет №9.
Вопрос 1. Хранимые процедуры и триггеры.
Хранимая процедура. Механизм ХП позволяет хранит в БД программы в скомпилированном виде. Процедуры пишутся на соответствующем языке ANSI SQL , Transact SQL, PL/SQL, SPL. Выполнение ХП происходит в рамках сервера.
ХП – мощное средство программного сервера и обслуживает БД, увеличивая производительность системы за счет уменьшения трафика. Хранимые процедуры хранятся на сервере СУБД и используются когда необходимо выполнить повторяющиеся в определенном порядке запросы к серверу MSSQL. Расширенные хранимые процедуры- это разновидность хранимый процедур но в них можно использовать обращения к подпрограммам написанных на С или С++ что позволяет расширить возможности Transact SQL.Предоставляются в DLL .Имена начинаются хр. XP_cmdshell данная процедура предоставляет доступ к командной строке ОС, т.к. данная процедура обладает широкими возможностями то доступ к ней разрешен только владельце БД мастер. Мастер есть пользователь наделенной ролью администратор БД.
ХП могут возвращать значения и модифицировать их, ХП может вычислить результаты и возвратить их.
Плюсы:
Высокая производительность.
Работа с архитектурой клиент-сервер.
Уровень безопасности – высокий.
Усиление правил сервера работы с данными.
ХП компилируются при первом выполнении и сохраняется в служебной таблице БД. При компилировании они активизируются. Откомпилированные ХП могут улучшить производительность.
Создание ХП Create procedure [владелец.] имя процедуры [;число] [имя параметра тип данных [выход]]…
[@ имя параметра тип данных [=умножение] [выход]]
Пример: create procedure all.employees as select *from employees
Вызов: exec all.employees
Name department badge
Petrov Labs 123
Smirnov Software 456
Новую ХП можно создать только к текущей БД.
Параметр процедуры. Есть возможность передавать ей значения с которыми она должна работать.
Может быть определен 1 или много параметров.
Перед именем ставиться @.
Имена являются локальными(только в процедуре где используются).
Create procedure proc 7 (@p1 char (15), @p2 char (20), @p3 int)
As insert into workers
Values (@p1, @p2, @p3)
Вызов: exec proc 7 ‘Petrov’, ‘Labs’, 3333
Команда вывода: select *from workers where badge = 3333
Экран:
Name department badge
Petrov Labs 3333
ХП не может быть унифицирована, непосредственно сначала нужно удалять и потом создавать заново.
Удаление: drop procedure имя процедуры(например proc 7).
ХП могут использовать переменные в транзакции. Они определяются DECLARE- где указывается тип данных, начальное значение, может быть установлено командой select.
Declare @ имя переменной тип данных …
Select @ имя переменной = выражение.
Триггер.
Это методы с помощью которых разработчик SQL сервера и аналитик БД могут сохранять целостность БД. Триггеры дают возможность в БД поддерживать целевые правила не полагаясь на ПО приложения. SQL сервер применяет правила и установки по умолчанию перед записью информации. Эти средства являются фильтром для информации, предотвращение определенных действий над данными: контроль ввода и изменение. Пост фильтр ля установки правил, по умолчанию.
Create Trigger [владелец.] имя триггера
ON [владелец.] имя таблицы
FOR {insert, update, delete}
[with incryption]
AS
Инструкция SQL.
Когда выполняется триггер SQL сервер создает специальную таблицу куда он помещает данные вызванные выполнением триггера (имя таблицы. Insert, delete). Поскольку триггеры выполняются после определенной строки, в таблице дублируют 1 или несколько строк таблицы. Бывают вставляющие, корректирующие, удаляющие триггеры.