Структура и основные форматы буфера обмена Windows.
Буфер обмена состоит:
-буфер
-утилита просмотра Clipbrd.exe
Буфер обеспечивает временное хранение информации в форме, позволяющей осуществлять обмен данными м/у приложениями.
Буфер исп-ся для временного хранения инф-ции.
Недостатки буфера:
-есть только 1 буфер
-все данные общедоступны
-все данные записанные в него, м.б. разрушены.
Перед тем как записать данные в буфер – он очищается.
В WinUser.hописаны форматы:
1.Текстовые:
-CF_TEXT
-CF_OEMTEXT
-CF_UNICODETEXT
2.Изображения:
-CF_BITMAP
-CF_DIB
-CF_TIFF
-CF_METAFILEPICT
-CF_ENHMETAFILE
-CF_PALETTE
-CF_PENDATA
3.Звуковые:
-CF_WAVE
-CF_RIFF
4.Эл.таблицы:
-CF_DIF
-CF_SYLK
Записывать в буфер может только прога-владелец, считывать может любая.
Существуют также спец. форматы:
-CF_DSPTEXT
-CF_DSPBITMAP
-CF_DSPMETAFILE
-CF_DSPPENHMETAFILE
Возможно зарегистрировать свой собственный формат.
Основные функции API для работы буфером обмена Windows.
Записывать данные в буфер может только прога-владелец.
Считывать может любая.
EmptyClipboard() – стать владельцем
OpenClipboard()
SetClipboardData()
GetClipboardData() – чтение из буфера
IsClipboardFormatAvailable(format) – лежат ли данные такого формата.
EnumClipboardFormats() – возвращает первый текущий формат.
Ограничения на операции с буфером:
1.EmptyClipboard() – очистить и стать владельцем
2.Только вызвавший EmptyClipboardимеет право писать в буфер
3.Передавать данные нужно в течении 1 операции.
4.Одновременно может нах-ся только по 1 элементу данных каждого типа.
Основы механизма связи между приложениями посредством каналов. Виды каналов. Основные функции API для создания и работы с каналами.
Канал – участок совместно используемой памяти, где процессы оставляют сообщения и данные друг для друга. Работа с каналами – аналогична работе с файлами.
Формально клиент-серверная архитектура, но права одинаковые. Сервер – тот, кто создает канал.
Виды каналов:
-входные, выходные, дуплексные
-байтовые и каналы сообщений
-блокируемые и неблокируемые
-именованные и анонимные
В 98й – именованные отсутствуют.
ReadFile() –чтение
WriteFile() – запись
CreatePipe(), CreateNamedPipe()
CreateFile()
Основы использования сетевых технологий для связи между приложения. Синхронный и асинхронный интерфейсы API-функций WinSock.
Основы использования сетевых технологий для связи между приложениями. Виды сетевых протоколов. Интерфейсы API-функций WinSock.
Протоколы нижнего уровня – передачу информации осуществляют с помощью сложных структур и пакетов. СтекTCP/IP. IP – Internet Protocol.
TCP – последовательный, 2 направленный протокол, предусматривает установку соединений.
UDP– передает пакеты, без установления соединения.
Протоколы высокого уровня – выполняют роль различных сетевых сервисов: SMTP, POP3, FTP, HTTP.
Большинство программ для работы с Internet, используют сокеты.
BercleySocketsStandart – набор ф-ий работы с сокетами.
WinSock – интерфейс APIф-ий для работы с сокетами, описаны в wsock32.dll.
Типы ф-ийWinSock:
1.Расширения Windowsдля ф-ийBercley
2.Ф-ии Bercley
3.Информационные ф-ии
Версии WinSock:
1.1 – поддержка только TCP/IP
2.0 – еще и IPx, SPx, AppleTalk.
2.0 содержится в ws2_32.dll
Синхронный интерфейс API-функций WinSock.
WinSock – интерфейс APIф-ий для работы с сокетами. Описаны в wsock32.dll.
Синхронный интерфейс – ф-ии Беркли.:
accept() – регистрирует подключение к заданному сокету.
bind() – назначает сокету лок.адрес.
closesocket() – закрываетсокет.
connect () – соединяет гнездо с узлом.
ioctlsocket() – читает или устанавливает пар-ры режима работы сокета.
listen() – режим прослушивания.
recv() – читает данные из сокета.
select() – определяет статус сокета(-ов).
send() – посылает данные в сокет.
sendto() – посылает данные по адресу.
setsockopt() – установка опций.
shutdown() – запрет приема/передачи ч/з сокет.
socket() – создает сокет.
Информационные ф-ии.
1.Преобразование данных
htonl() – 32разрядное в значение формата TCP/IP
htons() – 16разрядное в значение формата TCP/IP
ntohl() – значение формата TCP/IP в 32разрядное
ntohs() –значение формата TCP/IPв 16разрядное
inet_addr – строка IP адреса с точками в DWORD
inet_ntea –сетевой адрес (в виде длинного целого без знака) в IPадрес с точками
2.РаботасБД.
gethostbyaddr()
gethostbyname()
getprotobyname() – инфа о протоколе хоста
getservbyport() – инфа о сервисе по порту
getsockname() – имя сокета