- •Программа фонового копирования с размещением заданий в каталоге.
- •Программа фонового копирования с получением заданий по каналу
- •Серверная сторона
- •Эмуляция планировщика процессов с использованием волокон (Fiber). Алгоритм "лотерейное планирование".
- •Эмуляция планировщика процессов с использованием волокон (Fiber). Алгоритм "циклическое планирование".
- •Эмуляция планировщика процессов с использованием волокон (Fiber). Алгоритм "случайный выбор".
- •Эмуляция планировщика процессов с использованием волокон (Fiber). Алгоритм "приоритетные счетчики".
- •Cервер шифрации данных на основе именованных каналов
- •Серверная сторона
- •Cервер шифрации блоков данных на основе сокетов
- •Модель файловой системы fat16 в файле
- •Структура системы fat
- •Модель файловой системы ext2 в файле
- •Логическая организация файловой системы ext2
- •Физическая организация файловой системы ext2 Структура дискового раздела
- •Система адресации данных
- •Cетевой чат на основе именованных каналов с выделенным сервером
- •Серверная сторона
Cетевой чат на основе именованных каналов с выделенным сервером
---------------------------------------------------------------------------------------
Для работы с именованным каналом используется функция CreateNamePipe
Именованные каналы.
Каналы – способ локального и сетевого взаимодействия.
функции сервера
функции клиента
Каналы должны быть с одним именем.
СЕРВЕР
Создать канал: HANDLE CreateNamePipe(
LPCTSRT pipename,
DWORD openmode, // режим открытия
DWORD pipemode,
DWORD maxinstance,
DWORD outbufsize,
DWORD inbufsize,
LPSECURITY ATTRIBUTES ProcAttr,//атрибуты безопасности
)
Имя канала: \\.\pipe\<имя > - до 256 символов
FILE_FLAG_FIRST_PIPE_INSTANCE – может присутствовать во втором параметре:
PIPE_ACCESS_DUPLEX, PIPE_ACCESS_INBOUND, PIPE_ACCESS_OUTBOUND
FILE_FLAG_WRITE_THROUGH – если процессы находятся на разных машинах в сети
FILE_FLAG_OVERLAPPED – асинхронный режим (для канала)
PIPE_TYPE_BYTE и PIPE_TYPE_MESSAGE – каждая запись в канал – пакет
PIPE_READMODE_BYTE, PIPE_READMODE_MESSAGE
MAXINSTANCES – max допустимое число каналов с таким именем
PIPE_UNLIMITED_INSTANCES
DEFOULTTimeout – время ожидания
Серверная сторона
CREATE_NAMED_PIPE
BOOL ConnectNamePipe(HANDLE h, LPOVERLAPPED Ov)
BOOL DisconnectNamedPipe(HANDLE h)
КЛИЕНТ
BOOL WiatNamedPipe(LPCTSTR Name, DWORD TimeOut)
Подключиться к каналу:
CreateFile
В виде имени – имя канала \\<pc>\piep\<имя>
BOOL CallNamedPipe(
LPCTSTR NamePipe, //имя канала
LPVOID InBuf, // входные параметры
DWORD InSize, // сколько будет отправлено байт
LPVOID OutBuf, // выходной результат
DWORD OutSize, // полный размер буфера
LPDWORD BytesRead, // сколько реально прочитано
DWORD TimeOut)