Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
prakt-Storozhok.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
7.98 Mб
Скачать

Занятие 15. Программирование клиентских приложений для работы с серверами internet

Цель работы: практически освоить приемы работы с функциями библиотеки WinInet при программировании клиентских приложений для работы с серверами Internet.

1. Теоретическое введение

В теоретическом введении рассматриваются следующие вопросы.

• Библиотека WinInet.

• Функции библиотеки WinInet.

    1. Библиотека WinInet

Библиотека WinInet содержит набор процедур и функций для создания клиентских служб internet - HTTP, FTP и Gopher.

Создание клиентского приложения для работы с Web-сервером проводится следующим образом.

1) Открытие сеанса святи (функция IntetnetOpen).

2) Установление соединения по URE (функция InternetOpenUrl).

3) Чтение html-файла (функция InternetReadFile).

4) Закрытие соединения (функция InternetCloseHandle).

Создание клиентского приложения для работы с FTP-сервером проводится следующим образом.

1) Открытие сеанса связи (функция IntetnetOpen).

2) Установление соединения с FTP-сервером (функция IntetnetConnect).

3) Работа с FTP -сервером (функции FtpFindFirstFile и FtpFindNextFile - для вывода на экран списка файлов в текущем каталоге FTP -сервера FtpGetCurrentDirectory для вывода на экран имени текущего каталог FtpGetFile - для чтения файлов, расположенных на FTP -сервере и т. д.).

4) Закрытие соединения (функция InternetCloseHandle).

1.2. Функции библиотеки wininet

1.2.1. Функция создания сеанса связи InternetOpen

function InternetOpen(

lpszAgent: PChar;

dwAccessType: DWORD;

IpszProxy, IpszProxyBypass: PChar;

dwFlags: DWORD): HINTERNET: stdcall;

где lpszAgenl - адрес строки, которая содержит имя приложения. Если установить значение nil, то используется имя текущего приложения;

dwAccessType - определяет тип доступа. Возможные значения перечислены в табл. 1;

Таблица 1

Тип доступа к FTP-серверу

Значение

Описание

INTERNET OPEN ТУРЕ DIRECT

Разрешены любые имена

INTERNET OPEN ТУРЕ PRECONFIG

Преобразование peгистра

IpszProxyName - адрес строки, которая содержит имя proxy-сервера. Устанавливается в nil;

IpszProxyBypass - список опций proxy-сервера. Устанавливается в nil;

dwFlags - флаги. Возможны следующие значения: INTERNET_FLAG_ASYNC,INTERNET_FLAG_FROM_CACHE: INTERNET_FLAG_OFFLINE.

Функция при успешном выполнении возвращает дескриптор. В случае ошибки возвращает nil.

1.2.2. Функция установления url-соединения InternetOpenUrl

function lnlernetOpenUrl(

hinet: HINTERNET;

IpszUrl: PChar;

Ipszl leaders: PChar;

dwHeadersLeugth: DWORD:

dwFlags: DWORD;

dwContext: DWORD): HINTERNET; stdcall;,

где hInternet - дескриптор, возвращаемый функцией InternetOpen;

IpszUrl – адрес URL;

IpszHeaders - адрес строки, которая содержит заголовок, посылаемый HTTP -серверу;

dwFIeadersLengih - длина заголовка, если заголовок не указал как nil;

dwFlags- флаги;

dwContext - устанавливается в 0.

Возвращаемое значение: при успешном выполнении возвращает деск­риптор. В случае ошибки возвращает nil.

1.2.3. Функция чтения файла, находящегося на web-cepвepe InternetReadFile

function IniernetReadFile(

hFile: HINTERNET; IpBuffer: Pointer;

dwNumberOfBytesToRead: DWORD;

varlpdvvNumberOfBytesRead: DWORD): BOOL; stdcall;

где hFile - дескриптор, полученный после выполнения функции InternetOpenUrl, FtpOpenFile или HttpOpenRequest;

IpBuffer - адрес буфера, куда записываются получаемые клиентом данные

dwNumberOfBytesToRead - размер буфера;

lpdwNumberOfBytesRead - количество полученных байт. Возвращаемое значение - TRUE при успешном выполнении или FALSE в случае ошибки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]